如何在C#中快速创建TempFile?

问题描述

| 我想非常快速地创建一个具有指定大小的tempFile,而内容并不重要,我只想OS给该文件足够的空间,以便其他文件无法保存在磁盘中。 我知道一件事叫做“ SparseFile”,但我不知道如何创建它。 谢谢。     

解决方法

        喜欢FileStream.SetLength吗? http://msdn.microsoft.com/zh-CN/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,746,944 bytes
               2 Dir(s)  141,033,644,032 bytes free
    ,        看一下:使用C#的NTFS稀疏文件     ,        稀疏文件可能不是您想要的,稀疏文件中的零孔实际上不会分配在磁盘上,因此不会阻止驱动器填充其他数据。 有关创建大型文件的快速方法,请参阅此问题的答案(最好的方法与holtavolt建议使用
FileStream.SetLength
相同)。