C# 如何从FileStream创建文本编写器
Json需要一个TextWriter来创建JsonTextWriter的实例,并且需要由多个类共享。我正在尝试对当天决定运行的所有测试重复使用相同的结果实例 因此,稍后在编写测试结果时,需要在代码中使用JsonTextWriter实例 由于可共享性,我需要找到一种方法来打开现有的文本文件,并为其分配一个文件流,然后将其放入TextWriter,这样我就可以创建我的JsonTextWriter 但是如何使用FileStream创建TextWriter的实例呢 当我尝试创建一个新的TextWriter时,我得到一个错误,即它是一个抽象类 当我尝试使用File.OpenText(path)时,我无法将该文件设置为FileShare.ReadWrite 以下是我到目前为止的情况:C# 如何从FileStream创建文本编写器,c#,json,C#,Json,Json需要一个TextWriter来创建JsonTextWriter的实例,并且需要由多个类共享。我正在尝试对当天决定运行的所有测试重复使用相同的结果实例 因此,稍后在编写测试结果时,需要在代码中使用JsonTextWriter实例 由于可共享性,我需要找到一种方法来打开现有的文本文件,并为其分配一个文件流,然后将其放入TextWriter,这样我就可以创建我的JsonTextWriter 但是如何使用FileStream创建TextWriter的实例呢 当我尝试创建一个新的TextWrite
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?