কোনও ফাইলের আকারের মানদণ্ড পূরণের জন্য কোনও ফাইলের মধ্যে সন্নিবেশ করার জন্য একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং কীভাবে উত্পন্ন করা যায়?


114

ফাইলের আকারের সাথে আমার কিছু লোড ইস্যু পরীক্ষা করার দরকার আছে। আমার কাছে সি # তে একটি উইন্ডোজ অ্যাপ্লিকেশন লেখা রয়েছে যা স্বয়ংক্রিয়ভাবে ফাইলগুলি তৈরি করে। আমি প্রতিটি ফাইলের আকার জানি, প্রাক্তন। 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)) {

     }
}

1
আপনার স্ট্রিং তৈরি করার দরকার কী? শুধু আপনার বাফার লিখুন।
লাজার

ধরা যাক, আমি এটি "fs.Write (বাফার, 0, (int) ফাইলসাইজআইএনবিবি)" এর পরিবর্তে লোরেম ইপসাম পাঠ্য ফাইলগুলি তৈরি করতে প্রসারিত করতে চাই।
বাজনায়িয়াজ

উত্তর:


344

আপনি সবসময় স্ট্রিংয়ের জন্য কনস্ট্রাক্টর ব্যবহার charকরতে পারেন যা আপনি এই চরিত্রটির পুনরাবৃত্তি করতে চান এবং বেশ কয়েকবার সময় নেয় :

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

এটি আপনাকে 5000 স্ট্রিংয়ের স্ট্রিং দেয় - আপনার প্রয়োজনগুলিতে টুইট করে।


83
+1 আমাদের পূর্বপুরুষরা স্ট্যাক ওভারফ্লোয়ের আগে কী করেছিল? এত সরল, এত মিষ্টি।
ড্যান সলোভে

6
স্ট্যাক ওভারফ্লো আক্ষরিক অর্থে সর্বকালের সেরা দশ প্রযুক্তি সাফল্য :- কীভাবে কেউ এই কোডটি ছাড়াই দক্ষতার সাথে কোড শিখেছে, তা আমরা কখনই জানতে পারি না
বেন আকিন

2
আমি এই প্রাচীনকালে ছিলাম এবং এখনও আমি কোনও পূর্বপুরুষের মতো বোধ করি না: ডি এই মুক্তোগুলি সন্ধান করার একমাত্র উপায় ছিল আপনার কোড এবং / অথবা আপনার দলের কোড এবং অনুসন্ধানের মাধ্যমে সময়ের সাথে ভাল জিনিস সংগ্রহ করা। এখন আমরা সবার সাথে মুক্তো ভাগাভাগি করতে পারি :)
আন্দ্রেজ মার্টিনা

13

সবচেয়ে সহজ উপায় নিম্নলিখিত কোড অনুসরণ করা হবে:

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

এখন আপনার প্রয়োজনীয় সংখ্যক এ এর ​​স্ট্রিং রয়েছে।

লোরেম ইপসাম বা অন্য কোনও পুনরাবৃত্তি স্ট্রিং দিয়ে এটি পূরণ করার জন্য নিম্নলিখিত সিউডোকোডের মতো কিছু তৈরি করুন:

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

সম্পাদনা: আপনি যদি ইউনিকোডে সঞ্চয় করে থাকেন তবে আপনার অর্ধেক ফাইলাইজ কাউন্টের দরকার হতে পারে কারণ ইউনিকোডে চরিত্র অনুযায়ী দুটি বাইট ব্যবহার হয় যদি আমি সঠিকভাবে মনে করি।


4
আপনি যদি ইউনিকোড আউটপুট দিচ্ছেন তবে ফাইলসাইজআইএনকেবি ফাইলসাইজইনবাইটস .. বা ফাইলসাইজইনবাইটস / 2 হওয়া উচিত?
জেমস গন্ট

1
হ্যাঁ, আমি নমুনার পরিবর্তনশীল নামটি ব্যবহার করেছি, নির্ধারিত মান বাইট হয় তাই নামটি ভুল হয় বা নির্ধারিত মান।
ফ্লোরিয়ান ফন স্পিকজাক

2

আপনি এটি কীভাবে করতে পারেন তাতে অনেক বৈচিত্র রয়েছে। একটি হ'ল, একগুচ্ছ চর দিয়ে ফাইলটি পূরণ করুন। আপনার দরকার 100KB? সমস্যা নেই .. 100 * 1024 * 8 = 819200 বিট। একটি একক চর 16 বিট হয়। 819200/16 = 51200. আপনাকে একটি ফাইলের মধ্যে 51,200 অক্ষর আটকাতে হবে। তবে বিবেচনা করুন যে কোনও ফাইলের অতিরিক্ত শিরোনাম / মেটা ডেটা থাকতে পারে, সুতরাং আপনার জন্য অ্যাকাউন্ট করতে হবে এবং ফাইলটিতে লেখার জন্য অক্ষরের সংখ্যা হ্রাস করতে পারে।


0

আপনার প্রশ্নের আংশিক উত্তর হিসাবে আমি সম্প্রতি একটি পোর্টেবল ডাব্লুপিএফ অ্যাপ্লিকেশন তৈরি করেছি যা প্রায় কোনও আকারের 'জাঙ্ক' ফাইলগুলি সহজেই তৈরি করে: https://github.com/webmooch/FileCreator

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.