【发布时间】:2011-06-15 03:49:39
【问题描述】:
我想快速创建一个指定大小的临时文件,内容并不重要,我只是希望操作系统给文件足够的空间,以便其他文件无法保存在磁盘中。 我知道一件事叫做“SparseFile”,但我不知道如何创建一个。 谢谢。
【问题讨论】:
我想快速创建一个指定大小的临时文件,内容并不重要,我只是希望操作系统给文件足够的空间,以便其他文件无法保存在磁盘中。 我知道一件事叫做“SparseFile”,但我不知道如何创建一个。 谢谢。
【问题讨论】:
喜欢 FileStream.SetLength?
http://msdn.microsoft.com/en-us/library/system.io.filestream.setlength.aspx
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// Delete the file if it exists.
if (File.Exists(path))
{
File.Delete(path);
}
//Create the file.
DateTime start = DateTime.Now;
using (FileStream fs = File.Create(path))
{
fs.SetLength(1024*1024*1024);
}
TimeSpan elapsed = DateTime.Now - start;
Console.WriteLine(@"FileStream SetLength took: {0} to complete", elapsed.ToString() );
}
}
这是一个运行示例,显示了此操作的执行速度:
C:\temp>dir
Volume in drive C has no label.
Volume Serial Number is 7448-F891
Directory of C:\temp
06/17/2011 08:09 AM <DIR> .
06/17/2011 08:09 AM <DIR> ..
06/17/2011 08:07 AM 5,120 ConsoleApplication1.exe
1 File(s) 5,120 bytes
2 Dir(s) 142,110,666,752 bytes free
C:\temp>ConsoleApplication1.exe
FileStream SetLength took: 00:00:00.0060006 to complete
C:\temp>dir
Volume in drive C has no label.
Volume Serial Number is 7448-F891
Directory of C:\temp
06/17/2011 08:09 AM <DIR> .
06/17/2011 08:09 AM <DIR> ..
06/17/2011 08:07 AM 5,120 ConsoleApplication1.exe
06/17/2011 08:09 AM 1,073,741,824 MyTest.txt
2 File(s) 1,073,746,944 bytes
2 Dir(s) 141,033,644,032 bytes free
【讨论】:
【讨论】:
稀疏文件可能不是您想要的,稀疏文件中的零孔实际上不会分配到磁盘上,因此不会阻止驱动器填满其他数据。
查看this question 的答案以快速创建大文件(最好的方法与holtavolt 建议使用FileStream.SetLength 相同)。
【讨论】: