在c# /.NET中创建空文件最简单/规范的方法是什么?
目前我能找到的最简单的方法是:
System.IO.File.WriteAllLines(filename, new string[0]);
在c# /.NET中创建空文件最简单/规范的方法是什么?
目前我能找到的最简单的方法是:
System.IO.File.WriteAllLines(filename, new string[0]);
当前回答
path . gettempfilename()将创建一个唯一命名的空文件并返回该文件的路径。
如果你想控制路径,但获得一个随机文件名,你可以使用GetRandomFileName返回一个文件名字符串,并使用它创建
例如:
string fileName=Path.GetRandomFileName();
File.Create("custom\\path\\" + fileName);
其他回答
System.IO.File.Create(@"C:\Temp.txt");
正如其他人指出的那样,您应该处理该对象或将其包装在空的using语句中。
using (System.IO.File.Create(@"C:\Temp.txt"));
File.WriteAllText("path", String.Empty);
or
File.CreateText("path").Close();
要避免意外覆盖现有文件,请使用:
using (new FileStream(filename, FileMode.CreateNew)) {}
...并处理IOException,这将发生在文件已经存在的情况下。
文件。Create(在其他回答中建议使用)将覆盖文件的内容(如果文件已经存在)。在简单的情况下,可以使用File.Exists()减轻这种情况。然而,在多个线程和/或进程试图同时在同一个文件夹中创建文件的场景中,更健壮的东西是必要的。
path . gettempfilename()将创建一个唯一命名的空文件并返回该文件的路径。
如果你想控制路径,但获得一个随机文件名,你可以使用GetRandomFileName返回一个文件名字符串,并使用它创建
例如:
string fileName=Path.GetRandomFileName();
File.Create("custom\\path\\" + fileName);
只使用File。Create将使文件保持打开状态,这可能不是您想要的结果。
你可以用:
using (File.Create(filename)) ;
注意,这看起来有点奇怪。你可以用大括号代替:
using (File.Create(filename)) {}
或者直接调用Dispose:
File.Create(filename).Dispose();
无论哪种方式,如果你打算在多个地方使用这个方法,你可能应该考虑将它包装在一个helper方法中。
public static void CreateEmptyFile(string filename)
{
File.Create(filename).Dispose();
}
注意,就我所知,直接调用Dispose而不是使用using语句并没有太大区别——唯一可能产生区别的方法是在调用File之间中止线程。Create和Dispose调用。如果该竞争条件存在,我怀疑它也会存在于使用版本中,如果线程在文件的最后终止。方法,在返回值之前…