行形成在启动 C# 时删除的文件
Lines form a file deleting on start C#
我遇到的问题是,每次我 运行 我的代码时,"Titles.txt" 中的行都会被删除,我不知道为什么。基本上,我 运行 程序,然后我用文本框写入文件,然后我关闭程序,检查它是否写入文件并且它确实写入了,我再次 运行 它并检查文件又是空的。我能做什么?
public Form1()
{
InitializeComponent();
if(!File.Exists(mainFolder))
{
Directory.CreateDirectory(mainFolder);
Directory.CreateDirectory(tabTitlesFolder);
var file = File.Create(tabTitles);
file.Close();
}
}
您需要检查文件,而不是文件夹。
public Form1()
{
InitializeComponent();
if(!File.Exists(tabTitles)) // check if the file exists, (you had a check on mainFolder)
{
Directory.CreateDirectory(mainFolder);
Directory.CreateDirectory(tabTitlesFolder);
var file = File.Create(tabTitles); // this is what you are creating so also what you should be checking for above in the if
file.Close();
}
}
如果文件已经存在,File.Create
也会覆盖该文件,see the documentation。
最后,实现 IDisposable
的类型应该包装在 using
块或 try/finally
块中,以确保即使抛出异常也能被代码释放。 File.Create returns FileStream
是一次性的所以应该包起来。
using(File.Create(tabTitles)){}
由于您没有使用结果,因此不需要将其分配给任何东西,但如果您想写入文件,则可以。
using(var file = File.Create(tabTitles)){
// do something with file
}
File.Exists returns false 对于目录,因此您在每个 运行 上重新创建文件。
我遇到的问题是,每次我 运行 我的代码时,"Titles.txt" 中的行都会被删除,我不知道为什么。基本上,我 运行 程序,然后我用文本框写入文件,然后我关闭程序,检查它是否写入文件并且它确实写入了,我再次 运行 它并检查文件又是空的。我能做什么?
public Form1()
{
InitializeComponent();
if(!File.Exists(mainFolder))
{
Directory.CreateDirectory(mainFolder);
Directory.CreateDirectory(tabTitlesFolder);
var file = File.Create(tabTitles);
file.Close();
}
}
您需要检查文件,而不是文件夹。
public Form1()
{
InitializeComponent();
if(!File.Exists(tabTitles)) // check if the file exists, (you had a check on mainFolder)
{
Directory.CreateDirectory(mainFolder);
Directory.CreateDirectory(tabTitlesFolder);
var file = File.Create(tabTitles); // this is what you are creating so also what you should be checking for above in the if
file.Close();
}
}
如果文件已经存在,File.Create
也会覆盖该文件,see the documentation。
最后,实现 IDisposable
的类型应该包装在 using
块或 try/finally
块中,以确保即使抛出异常也能被代码释放。 File.Create returns FileStream
是一次性的所以应该包起来。
using(File.Create(tabTitles)){}
由于您没有使用结果,因此不需要将其分配给任何东西,但如果您想写入文件,则可以。
using(var file = File.Create(tabTitles)){
// do something with file
}
File.Exists returns false 对于目录,因此您在每个 运行 上重新创建文件。