Быстро создать большой файл в системе Windows - PullRequest
230 голосов
/ 11 июня 2009

В том же духе, что и Быстрое создание большого файла в системе Linux , Я хотел бы быстро создать большой файл в системе Windows. По большому счету я думаю 5 ГБ. Содержание не имеет значения. Встроенная команда или короткий командный файл предпочтительнее, но я приму заявку, если нет других простых способов.

Ответы [ 21 ]

3 голосов
/ 11 июня 2009

За исключением написания полного приложения, мы, ребята из Python, можем получить файлы любого размера с четырьмя строками, один и тот же фрагмент в Windows и Linux (строка os.stat() - это просто проверка):

>>> f = open('myfile.txt','w')
>>> f.seek(1024-1) # an example, pick any size
>>> f.write('\x00')
>>> f.close()
>>> os.stat('myfile.txt').st_size
1024L
>>>
3 голосов
/ 11 августа 2012

Обычный C ... это сборка под MinGW GCC на Windows XX и должна работать на любой «универсальной» платформе C.

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

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

#include <stdio.h>
#include <stdlib.h>

FILE *file;

int main(int argc, char **argv)
{
    unsigned long  size;

    if(argc!=3)
    {
        printf("Error ... syntax: Fillerfile  size  Fname \n\n");
        exit(1);
    }

    size = atoi(&*argv[1]);

    printf("Creating %d byte file '%s'...\n", size, &*argv[2]);

    if(!(file = fopen(&*argv[2], "w+")))
    {
        printf("Error opening file %s!\n\n", &*argv[2]);
        exit(1);
    }

    fseek(file, size-1, SEEK_SET);
    fprintf(file, "%c", 0x00);
    fclose(file);
}
3 голосов
/ 07 июля 2016

Недавно я искал способ создания большого фиктивного файла с распределением пространства. Все решения выглядят неловко. Наконец, я только что запустил утилиту DISKPART в Windows (встроенную после Windows Vista):

DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED

Где MAXIMUM - размер результирующего файла, здесь 20 ГБ.

2 голосов
/ 02 февраля 2017

Временные файлы должны храниться в папке временных файлов Windows. Основываясь на ответе от Rod , вы можете использовать следующую строку для создания временного файла объемом 5 ГБ, который возвращает имя файла

[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }

Пояснение:

  • [System.IO.Path]::GetTempFileName() генерирует случайное имя файла со случайным расширением в папке Temp Windows
  • Конвейер используется для передачи имени в [System.IO.File]::Create($_), который создает файл
  • Имя файла устанавливается для вновь созданного файла с помощью .SetLength(5gb). Я был немного удивлен, обнаружив, что PowerShell поддерживает преобразование байтов , что действительно полезно.
  • Дескриптор файла должен быть закрыт с .close, чтобы другие приложения могли получить к нему доступ
  • При ;$_ возвращается имя файла, а при | ? { $_ } гарантируется, что возвращается только имя файла, а не пустая строка, возвращаемая [System.IO.File]::Create($_)
2 голосов
/ 11 июня 2009

Я нашел решение с использованием DEBUG на http://www.scribd.com/doc/445750/Create-a-Huge-File,, но я не знаю простого способа его написать и, похоже, он не может создавать файлы размером более 1 ГБ.

2 голосов
/ 25 августа 2015

... 1 МБ файл dummy.txt в течение нескольких секунд.

echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt

См. Здесь: http://www.windows -commandline.com / как создать большой фиктивный файл /

1 голос
/ 30 декабря 2018

Самый простой способ, который я нашел, это бесплатная утилита: http://www.mynikko.com/dummy/

Создает фиктивные файлы произвольного размера, которые либо заполнены пробелами, либо заполнены несжимаемым содержимым (на ваш выбор). Вот скриншот:

enter image description here

1 голос
/ 05 апреля 2013

Вы можете попробовать этот код C ++:

    #include<stdlib.h>
    #include<iostream>
    #include<conio.h>
    #include<fstream>
    #using namespace std;

    int main()
    {
        int a;
        ofstream fcout ("big_file.txt");
        for(;;a += 1999999999){
            do{
                fcout << a;
            }
            while(!a);
        }
    }

Возможно, потребуется некоторое время для генерации в зависимости от скорости вашего процессора ...

1 голос
/ 25 апреля 2014

Простой ответ в Python: если вам нужно создать большой реальный текстовый файл, я просто использовал простой цикл while и смог создать файл размером 5 ГБ примерно за 20 секунд. Я знаю, что это грубо, но это достаточно быстро.

outfile = open("outfile.log", "a+")

def write(outfile):
    outfile.write("hello world hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world"+"\n")
    return

i=0
while i < 1000000:
    write(outfile)
    i += 1
outfile.close()
0 голосов
/ 09 июля 2018

Я сделал несколько дополнений к тому же fsutil методу, который упоминался в выбранном ответе. Это делается для создания файлов разных расширений и / или разных размеров.

set file_list=avi bmp doc docm docx eps gif jpeg jpg key m4v mov mp4 mpg msg nsf odt pdf png pps ppsx ppt pptx rar rtf tif tiff txt wmv xls xlsb xlsm xlsx xps zip 7z
set file_size= 1
for %%f in (%file_list%) do (
fsutil file createnew valid_%%f.%%f %file_size%
) > xxlogs.txt

Код можно клонировать с https://github.com/iamakidilam/bulkFileCreater.git

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