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只是将内存缓冲区清空到磁盘,它可以确保您没有未写入文件的数据。这很好,链接非常有用,谢谢!