繁体   English   中英

StreamWriter-不追加到创建的文件

[英]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();
}

可以尝试File.Open函数。 FileModes FileMode的底部和列表中有一个很好的示例.Append是您想要的

与其他发布者类似,您的代码在我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM