Как создать строку определенной длины для вставки в файл в соответствии с критериями размера файла? - PullRequest
94 голосов
/ 17 февраля 2011

У меня есть требование проверить некоторые проблемы с загрузкой в ​​отношении размера файла.У меня есть приложение для Windows, написанное на C #, которое будет автоматически генерировать файлы.Я знаю размер каждого файла, напр.100 КБ, и сколько файлов для генерации.Мне нужна помощь в том, как создать строку, меньшую или равную требуемому размеру файла.

псевдокод:

long fileSizeInKB = (1024 * 100); //100KB
int numberOfFiles = 5;

for(var i = 0; i < numberOfFiles - 1; i++) {
     var dataSize = fileSizeInKB;
     var buffer = new byte[dataSize];
     using (var fs = new FileStream(File, FileMode.Create, FileAccess.Write)) {

     }
}

Ответы [ 4 ]

276 голосов
/ 17 февраля 2011

Вы всегда можете использовать конструктор для строки, которая принимает char и сколько раз вы хотите, чтобы этот символ повторялся:

string myString = new string('*', 5000);

Это дает вам строку из 5000 звезд - подстройку под ваши нужды.

13 голосов
/ 17 февраля 2011

Самым простым способом был бы следующий код:

var content = new string('A', fileSizeInKB);

Теперь у вас есть строка с таким количеством А., сколько требуется.

Чтобы заполнить ее Lorem Ipsum или какой-либо другой повторяющейся строкойсоздайте что-то вроде следующего псевдокода:

string contentString = "Lorem Ipsum...";
for (int i = 0; i < fileSizeInKB / contentString.Length; i++)
  //write contentString to file

if (fileSizeInKB % contentString.Length > 0)
  // write remaining substring of contentString to file

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

1 голос
/ 17 февраля 2011

Существует множество вариантов того, как вы можете это сделать. Можно было бы заполнить файл кучей символов. Вам нужно 100 КБ? Нет проблем .. 100 *1024* 8 = 819200 бит. Один символ 16 бит. 819200/16 = 51200. Вам нужно вставить 51 200 символов в файл. Но учтите, что файл может иметь дополнительный заголовок / метаданные, поэтому вам может понадобиться учесть это и уменьшить количество символов для записи в файл.

0 голосов
/ 06 мая 2014

В качестве частичного ответа на ваш вопрос я недавно создал портативное приложение WPF, которое легко создает «ненужные» файлы практически любого размера: https://github.com/webmooch/FileCreator

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