Як створити файл довільного розміру.
Іноді бувають ситуації, в яких потрібно швидко створити один або кілька файлів довільного розміру. Операційна система 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
}
Працює нешвидко, але для прискорення можна запустити скрипт в кілька потоків.
.