C# StreamWriter-未附加到已创建的文件
我正在使用StreamWriter对象写入构造函数创建的文件或已存在的文件。如果文件存在,则会附加数据。如果没有,那么它应该创建一个文件,然后再附加数据。问题是,当需要创建文件时,StreamWriter构造函数会创建文件,但不会将任何数据写入文件C# StreamWriter-未附加到已创建的文件,c#,file-io,streamwriter,C#,File Io,Streamwriter,我正在使用StreamWriter对象写入构造函数创建的文件或已存在的文件。如果文件存在,则会附加数据。如果没有,那么它应该创建一个文件,然后再附加数据。问题是,当需要创建文件时,StreamWriter构造函数会创建文件,但不会将任何数据写入文件 bool fileExists = File.Exists(filePath); using (StreamWriter writer = new StreamWriter(filePath, true)) { if (!fileExist
bool fileExists = File.Exists(filePath);
using (StreamWriter writer = new StreamWriter(filePath, true))
{
if (!fileExists)
{
writer.WriteLine("start");
}
writer.WriteLine("data");
}
编辑:
谢谢你的回答。using块负责关闭writer。至于其他人说这对他们有效,我能给你什么信息来进一步诊断这个问题吗?该文件通过网络进行本地化。这可能是一个潜在的问题。我间歇性地收到错误,“找不到路径的一部分…”和“指定的网络名称不再可用。”您的代码对我有效,运行3次后我: start data data data
而且运行平稳,可以试试这个吗?您的代码对我来说运行正常 尝试使用using语句
using (StreamWriter writer = new StreamWriter(filePath, true))
{
if (!fileExists)
{
writer.WriteLine("start");
}
writer.WriteLine("data");
writer.Flush();
}
代码在我的计算机上运行良好。我们能知道变量filePath包含什么吗?也许你看错了文件 更新:网络问题?也许有人在网络的另一端做了什么。尝试写入本地文件。如果可以,请尝试写入另一位置的远程文件。可以尝试此功能。下面是一个很好的例子
FileMode.Append是您想要的与其他人发布的类似,您的代码在我的电脑上运行良好 将代码分为两部分可能会有所帮助,第一部分编写文件头(如果文件不存在),第二部分编写数据:
try
{
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("start");
}
}
}
catch (IOException ex)
{
}
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine("data");
}
好吧,我想起来了。我的本地计算机在通过网络间歇性访问文件时遇到问题。我将代码上传到服务器,并在那里运行,没有任何问题。我真的很感谢你的帮助。很抱歉,解决方案不是很令人兴奋 你的代码在我的机器上运行得很好。对我来说也很好@丹,再试试看,也许你在第一次跑步时错过了什么?using语句应该负责关闭和刷新…您上面的代码片段对我来说很有用,您确定其他东西没有干扰文件吗?我再次检查了代码,仍然没有看到任何异常。奇怪的是,如果文件存在,它就会工作。我将收到一个包含“数据”内容的文件。但它从不在初始调用中附加任何内容。这段代码是否被包装在一个try…catch块中,catch语句中没有错误处理?作者使用的是
using
语句?如果您查看示例代码,我使用的是using语句?string filePath=@“\\server\folder\filename.htm”;创建文件后,它可以处理后续调用,因此我知道它是正确的路径。根据您发出的间歇性错误消息,服务器本身可能正忙/脱机。或者文件夹本身已被删除,而您没有创建该文件夹的权限(或者尚未创建该文件夹)。可能是文件/文件夹权限问题?这是我的第一反应。如果文件不存在,我尝试创建它,并且只使用上面的代码,但是在第一次调用时也会写入。以这种方式在服务器上创建文件是否存在延迟问题?我已经在编辑部分下发布了我编写的代码,以检查这是否可以通过网络工作。顺便说一句,不要将其视为生产代码,因为这次的使用不是100%正确的,但它对我来说是有效的,它在创建文件时放入数据,然后附加到id。
try
{
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("start");
}
}
}
catch (IOException ex)
{
}
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine("data");
}