Створення файлу довільного розміру в windows

Іноді бувають ситуації, в яких потрібно швидко створити один або кілька файлів довільного розміру. Операційна система Windows пропонує для цього декілька різних варіантів.

Створення файлу за допомогою fsutil

Швидше і найпростіше створити файл за допомогою утиліти командного рядка fsutil. Для прикладу відкриємо консоль (обов'язково з правами адміністратора) і створимо на диску E файл file.txt розміром 1 ГБ командою:

fsutil file createnew E: \ File.txt 1000000000

Таким чином можна створити файл будь-якого розміру, причому файл створюється практично миттєво.

Створення файлу довільного розміру в windows

Створення файлу за допомогою PowerShell

Те ж саме можна зробити за допомогою PowerShell, хоча команди будуть трохи складніше:

$ File = New-Object -TypeName System.IO.FileStream -ArgumentList E: \ File.txt, Create, ReadWrite
$ File.SetLength (1000Mb)
$ File.Close ()

Тут ми спочатку створюємо об'єкт типу файл, а потім за допомогою методу SetLength присвоюємо йому необхідний розмір. Таким способом також можна миттєво створити файл будь-якого розміру.

Створення файлу довільного розміру в windows

Є і ще один, альтернативний спосіб створення файлу за допомогою PowerShell. Якщо в першому випадку ми створювали файл і задавали його розмір, то тут створюємо вміст потрібного розміру і поміщаємо це вміст в зазначений файл. наприклад:

$ Content = New-Object -TypeName Byte [] -ArgumentList 10Mb
Set-Content -Path E: \ File.txt -Value $ content -Encoding Byte

Створення файлу довільного розміру в windows

При використанні цього методу створення файлу займає деякий час, залежне від розміру файлу. Крім того, з його допомогою неможливо створити файл великого розміру. Максимальний розмір файлу обмежений вбудованим значенням [int] :: MaxValue і при його перевищенні буде видана помилка "Array dimentions exceeded supported range".

Всі описані способи створюють порожні файли (точніше файли, заповнені символом NUL). Якщо треба створити файл заданого розміру і заповнити його будь-яким довільним вмістом, то можна трохи змінити попередній спосіб і скористатися такими командами:

$ Array = New-Object -TypeName Byte [] -ArgumentList 10Mb
$ Obj = New-Object -TypeName System.Random
$ Obj.NextBytes ($ array)
Set-Content -Path E: \ File.txt -Value $ array -Encoding Byte

Створення файлу довільного розміру в windows

Ну і для генерації великої кількості файлів (напр. 1000) можна скористатися таким скриптом:

$ Array = New-Object -TypeName Byte [] -ArgumentList 10Mb
$ Obj = New-Object -TypeName System.Random
$ Obj.NextBytes ($ array)
for ($ i = 1; $ i -le 1000; $ i ++) Set-Content -Path E: \ File.txt $ i -Value $ array -Encoding Byte
>

Працює нешвидко, але для прискорення можна запустити скрипт в кілька потоків.