Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Як створити файл довільного розміру.

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

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

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

fsutil file createnew E: \ File.txt 1000000000

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



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

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

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

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



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

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



При використанні цього методу створення файлу займає деякий час, залежне від розміру файлу.Крім того, з його допомогою неможливо створити файл великого розміру. Максимальний розмір файлу обмежений вбудованим значенням [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



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

$ 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
}

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

.