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

时间:2012-01-02 09:26:10

标签: c# text-files

  

可能重复:
  The file is being used by another process, I must close it? How?

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

    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中的示例,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

我宁愿这样做:

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

如果该文件不存在,则会创建一个新文件。

using会自动调用编写器上的Dispose,编写器会调用Close,这会关闭编写器和基础流。

答案 1 :(得分:1)

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

您也可以使用File.OpenText