[c#] 파일 크기 기준을 충족하기 위해 파일에 삽입 할 특정 길이의 문자열을 생성하는 방법은 무엇입니까?

파일 크기와 관련하여 몇 가지로드 문제를 테스트해야합니다. 파일을 자동으로 생성하는 C #으로 작성된 Windows 응용 프로그램이 있습니다. 각 파일의 크기를 알고 있습니다. 100KB 및 생성 할 파일 수. 내가 도움이 필요한 것은 필요한 파일 크기보다 작거나 같은 문자열을 생성하는 방법입니다.

의사 코드 :

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)) {

     }
}



답변

a char및 해당 문자를 반복하려는 횟수 를 취하는 문자열에 대해 항상 a 생성자를 사용할 수 있습니다 .

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

이것은 당신에게 5000 개의 별을 제공합니다-당신의 필요에 따라 조정하십시오.


답변

가장 쉬운 방법은 다음 코드입니다.

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

이제 필요한만큼의 A가있는 문자열이 있습니다.

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

편집 : 유니 코드로 저장하는 경우 올바르게 기억하면 유니 코드가 문자 당 2 바이트를 사용하기 때문에 파일 크기의 절반이 필요할 수 있습니다.


답변

이를 수행하는 방법에는 많은 변형이 있습니다. 하나는 파일을 여러 문자로 채우는 것입니다. 100KB가 필요하십니까? 문제 없습니다. 100 * 1024 * 8 = 819200 비트. 단일 문자는 16 비트입니다. 819200/16 = 51200. 파일에 51,200 개의 문자를 붙여야합니다. 그러나 파일에 추가 헤더 / 메타 데이터가있을 수 있으므로이를 고려하고 파일에 쓸 문자 수를 줄여야 할 수 있습니다.


답변

귀하의 질문에 대한 부분적인 답변으로 저는 최근 거의 모든 크기의 ‘정크’파일을 쉽게 생성하는 휴대용 WPF 앱을 만들었습니다. https://github.com/webmooch/FileCreator


답변