আমাদের অ্যাপ্লিকেশনটির স্ক্রিপ্ট সম্পাদক (বড় ম্যাক্রোগুলির জন্য আমাদের অভ্যন্তরীণ পণ্যের জন্য এটি ভিবিএর মতো ) কীভাবে বড় ফাইলগুলি পরিচালনা করা যায় তা পরিচালনা করার জন্য আমি সুন্দর কাজ পেয়েছি । বেশিরভাগ ফাইলগুলি প্রায় 300-400 কেবি যা জরিমানা লোড হয়। কিন্তু যখন তারা 100 এমবি ছাড়িয়ে যায় তখন প্রক্রিয়াটিতে একটি কঠিন সময় (যেমনটি আপনি আশা করেছিলেন) করতে হবে।
যা ঘটে তা হ'ল ফাইলটি রিচটেক্সটবক্সে পড়ে এবং নেভিগেট করা হয় - এই অংশটি সম্পর্কে খুব বেশি চিন্তা করবেন না।
যে বিকাশকারী প্রাথমিক কোডটি লিখেছেন তারা কেবল স্ট্রিমরিডার ব্যবহার করে এবং করছেন
[Reader].ReadToEnd()
যা সম্পূর্ণ হতে বেশ কিছুটা সময় নিতে পারে।
আমার কাজটি হ'ল এই বিট কোডটি ভাঙা, খণ্ডগুলিতে এটি একটি বাফারে পড়ুন এবং এটি বাতিল করার বিকল্প সহ একটি প্রগতি বার দেখান।
কিছু অনুমান:
- বেশিরভাগ ফাইল 30-40 এমবি হবে
- ফাইলটির বিষয়বস্তু হ'ল পাঠ্য (বাইনারি নয়), কিছু ইউনিক্স ফর্ম্যাট, কিছু ডস।
- বিষয়বস্তুগুলি পুনরুদ্ধার করা হলে আমরা কী টার্মিনেটর ব্যবহার করা হয় তা নিয়ে কাজ করি।
- রিচটেক্সটবক্সে রেন্ডার করতে সময়টি লোড হওয়ার পরে কারওই উদ্বেগ নেই। এটি কেবল পাঠ্যের প্রাথমিক লোড।
এখন প্রশ্নের জন্য:
- আমি কি কেবল স্ট্রিমরিডার ব্যবহার করতে পারি, তারপরে দৈর্ঘ্যের সম্পত্তিটি পরীক্ষা করতে পারি (সুতরাং প্রগ্রেসম্যাক্স) এবং একটি সেট বাফার আকারের জন্য একটি রিড জারি করতে পারি এবং কিছুক্ষণের মধ্যে পুনরুক্তি করতে পারা যায় কোনও ব্যাকগ্রাউন্ড কর্মীর ভিতরে থাকা অবস্থায় , সুতরাং এটি মূল ইউআই থ্রেডটি ব্লক করে না? তারপরে স্ট্রিংবিল্ডারটি সম্পূর্ণ হয়ে গেলে মূল থ্রেডে ফিরিয়ে দিন।
- সামগ্রীগুলি একটি স্ট্রিংবিল্ডারে যাবে। দৈর্ঘ্য উপলব্ধ থাকলে আমি স্ট্রিংবিল্ডার স্ট্রিমের আকার দিয়ে আরম্ভ করতে পারি?
এগুলি কি (আপনার পেশাদার মতামতে) ভাল ধারণা? স্ট্রিমস থেকে কন্টেন্ট পড়ার আগে আমার কয়েকটি সমস্যা ছিল, কারণ এটি সর্বদা সর্বশেষ কয়েকটি বাইট বা কিছু মিস করবে তবে আমি অন্য প্রশ্ন জিজ্ঞাসা করব যদি এই ঘটনাটি হয় তবে।