C# 我无法将文本写入文本文件

C# 我无法将文本写入文本文件,c#,text-files,C#,Text Files,可能重复: 我不知道为什么会这样,但我无法将一些数据写入文本文件。我是这样做的: private void CreateLastOpenFile() { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } if (!File.Exists(file)) {

可能重复:

我不知道为什么会这样,但我无法将一些数据写入文本文件。我是这样做的:

    private void CreateLastOpenFile()
    {
        if (!Directory.Exists(directory))
        {
            Directory.CreateDirectory(directory);
        }

        if (!File.Exists(file))
        {
            FileStream newFile = File.Create(file);
            newFile.Close();
        }

        using (StreamWriter lastOpenedFile = new StreamWriter(file))
        {
            lastOpenedFile.WriteLine(filePath);
        }
    }
我这样做正确吗?我应该检查目录是否存在吗?如果文件存在?正确的方法是什么?我使用的是MSDN中的示例,但我不确定如何做到这一点。

我宁愿这样做:

String p = Path.GetDirectoryName(fileName);
if (!Directory.Exists(p))
{
    Directory.CreateDirectory(p);
}

FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
using (StreamWriter writer = new StreamWriter(stream))
{
    ...
    writer.Flush();
}
如果文件不存在,将创建一个新文件

使用
自动调用写入程序上的
Dispose
,然后调用
Close
,关闭写入程序和底层流。

您不需要创建文件,StreamWriter会帮您完成。但是您需要像您一样确保目录存在


您也可以使用。

确认您正在按预期使用文件/文件路径。看起来你已经把它们倒过来了..看看你已经开始的线程中的答案-它还会创建所需的目录吗?不会。我已经更新了我的答案,以便在目录不存在时创建目录。请注意,在我的示例中,
fileName
变量必须包含路径和文件名,如
C:\Temp\TestFile.txt
。它将检查并创建
C:\Temp
,并写入文件
TestFile.txt
。好的,值得回答。还有一件事。我不熟悉Flush,应该推荐吗?Flush只是将内存缓冲区清空到磁盘,它可以确保您没有未写入文件的数据。这很好,链接非常有用,谢谢!