[英]StreamWriter - Not appending to created file
我正在使用StreamWriter对象写入由构造函数创建或已经存在的文件。 如果文件存在,那么它将追加数据。 如果没有,那么它应该创建一个文件,然后还要附加数据。 问题在于,当需要创建文件时,StreamWriter构造函数将创建文件,但不会将任何数据写入该文件。
bool fileExists = File.Exists(filePath);
using (StreamWriter writer = new StreamWriter(filePath, true))
{
if (!fileExists)
{
writer.WriteLine("start");
}
writer.WriteLine("data");
}
编辑:感谢您的答案。 using块负责关闭编写器。 至于其他人说对他们有用的话,请问有什么信息可以进一步诊断问题吗? 该文件跨网络定位。 可能是一个潜在的问题。 我间歇性地收到错误消息:“找不到路径的一部分...”和“指定的网络名称不再可用”。
该代码在我的计算机上运行良好。 我们可以知道变量filePath包含什么吗? 也许您看错了文件...
更新:网络问题? 也许有人在网络的另一端做某事。 尝试写入本地文件。 如果可行,请尝试在另一个位置上写入远程文件。
好吧,所以我想通了。 我的本地计算机在通过网络间歇性访问文件时遇到问题。 我将代码上传到服务器,然后在那运行了,没有任何问题。 我真的很感谢所有帮助。 对不起,解决方案不是很令人兴奋。
您的代码对我有用,经过3次运行,我已经:
start data data data
您确定您不尝试访问文件,由于某种原因无法写入文件? 另外,尽管Dispose()
应该刷新数据,但也要确保在处理之前放置writer.Close()
。 如果这样做没有帮助,请尝试使用带有适当标志的File.Create()
手动创建文件。
//编辑:我已经在我的机器上尝试了以下代码:
public unsafe static void Main() { string filePath = @"\\COMP-NAME\Documents\foo.txt"; FileStream fs = null; if (!File.Exists(filePath)) fs = File.Create(filePath); else fs = File.Open(filePath, FileMode.Append); using (StreamWriter writer = new StreamWriter(fs)) { writer.WriteLine("data"); } }
而且运行平稳,可以尝试一下吗?
您的代码对我来说正常工作。
尝试using语句
using (StreamWriter writer = new StreamWriter(filePath, true))
{
if (!fileExists)
{
writer.WriteLine("start");
}
writer.WriteLine("data");
writer.Flush();
}
与其他发布者类似,您的代码在我的PC上运行正常。
这可能有助于您将代码分为两部分,第一部分在文件不存在时编写标头,第二部分在编写数据:
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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.