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

时间:2011-06-15 03:49:40

标签: c# .net file

我想非常快速地创建一个具有指定大小的tempFile,并且内容并不重要,我只是希望操作系统为文件提供足够的空间,以便其他文件无法保存在磁盘中。 我知道一件名为“SparseFile”的东西,但我不知道如何创建一个。 感谢。

3 个答案:

答案 0 :(得分:4)

与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

答案 1 :(得分:3)

看看这个:NTFS Sparse Files with C#

答案 2 :(得分:1)

稀疏文件可能不是您想要的,稀疏文件中的零漏洞实际上不会在磁盘上分配,因此不会阻止驱动器填满其他数据。

查看this question的答案,以便快速创建大文件(其中最好的与holtavolt使用FileStream.SetLength的建议相同)。