Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从FileStream创建文本编写器_C#_Json - Fatal编程技术网

C# 如何从FileStream创建文本编写器

C# 如何从FileStream创建文本编写器,c#,json,C#,Json,Json需要一个TextWriter来创建JsonTextWriter的实例,并且需要由多个类共享。我正在尝试对当天决定运行的所有测试重复使用相同的结果实例 因此,稍后在编写测试结果时,需要在代码中使用JsonTextWriter实例 由于可共享性,我需要找到一种方法来打开现有的文本文件,并为其分配一个文件流,然后将其放入TextWriter,这样我就可以创建我的JsonTextWriter 但是如何使用FileStream创建TextWriter的实例呢 当我尝试创建一个新的TextWrite

Json需要一个TextWriter来创建JsonTextWriter的实例,并且需要由多个类共享。我正在尝试对当天决定运行的所有测试重复使用相同的结果实例

因此,稍后在编写测试结果时,需要在代码中使用JsonTextWriter实例

由于可共享性,我需要找到一种方法来打开现有的文本文件,并为其分配一个文件流,然后将其放入TextWriter,这样我就可以创建我的JsonTextWriter

但是如何使用FileStream创建TextWriter的实例呢

当我尝试创建一个新的TextWriter时,我得到一个错误,即它是一个抽象类

当我尝试使用File.OpenText(path)时,我无法将该文件设置为FileShare.ReadWrite

以下是我到目前为止的情况:

private void InitializeJSONResultWriter()
{
    string methodName = Utils.getCurrentMethod();
    Log("In:  " + methodName);
    if (textWriter == null)
    {
        //textWriter = File.CreateText(ResultsPath);
        FileStream strm = File.Open(ResultsPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
        TextWriter textWriter = File.CreateText(ResultsPath);

        // ? ugh

        _jsonTextWriter = new JsonTextWriter(textWriter);
    }
}

TextWriter
是一个抽象类,您可以使用继承自该类的
StreamWriter

using (var stream = File.Open("somefile", FileMode.CreateNew))
{
    using (var sw = new StreamWriter(stream))
    {
        using (var jw = new JsonTextWriter(sw))
        {
            jw.WriteRaw("{}");
        }
    }
}

TextWriter
是一个抽象类,您可以使用继承自该类的
StreamWriter

using (var stream = File.Open("somefile", FileMode.CreateNew))
{
    using (var sw = new StreamWriter(stream))
    {
        using (var jw = new JsonTextWriter(sw))
        {
            jw.WriteRaw("{}");
        }
    }
}

然后我是否将StreamWriter转换为TextWriter以满足Newtonsoft.Json?您不需要转换为
TextWriter
StreamWriter
继承自此,您只需使用它,请参见更新我没有看到重新打开JsonTextWriter的方法。每次需要对结果文件执行写入操作时,我是否必须创建一个新的JsonTextWriter?然后我是否将StreamWriter转换为TextWriter以满足Newtonsoft.Json的要求?您不需要转换为
TextWriter
StreamWriter
继承自此,您只需使用它,请参阅更新我看不到重新打开JsonTextWriter的方法。每次需要对结果文件执行写入操作时,是否必须创建新的JsonTextWriter?