Как быстро создать TempFile в C #? - PullRequest
3 голосов
/ 15 июня 2011

Я хочу создать временный файл с указанным размером очень быстро, и содержимое не имеет значения, я просто хочу, чтобы ОС предоставила файлу достаточно места, чтобы другой файл не мог быть сохранен на диске. И я знаю одну вещь под названием «SparseFile», но я не знаю, как ее создать. спасибо.

Ответы [ 3 ]

4 голосов
/ 15 июня 2011

Как 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
3 голосов
/ 15 июня 2011

Взгляните на это: Разреженные файлы NTFS с C #

1 голос
/ 15 июня 2011

Разреженные файлы могут быть не тем, что вам нужно, обнуленные дыры в разреженных файлах на самом деле не будут размещены на диске и не будут препятствовать заполнению диска другими данными.

См. Ответы на этот вопрос , чтобы узнать, как быстро создать большой файл (лучший из которых совпадает с предложением Холтавольта использовать FileStream.SetLength).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...