শিরোনাম এটি সব বলছে:
- আমি তার মতো একটি tar.gz সংরক্ষণাগারে পড়েছি
- বাইটের অ্যারেতে ফাইলটি ভাঙ্গুন
- এই বাইটগুলি একটি বেস 64 স্ট্রিংয়ে রূপান্তর করুন
- সেই বেস 64 স্ট্রিংটিকে আবার বাইটের অ্যারে রূপান্তর করুন
- সেই নতুন বাইটগুলি আবার নতুন tar.gz ফাইলে লিখুন
আমি নিশ্চিত করতে পারি যে উভয় ফাইলই একই আকারের (নীচের পদ্ধতিটি সত্য ফিরে আসে) তবে আমি আর অনুলিপি সংস্করণটি বের করতে পারি না।
আমি কিছু অনুপস্থিত করছি?
Boolean MyMethod(){
using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) {
String AsString = sr.ReadToEnd();
byte[] AsBytes = new byte[AsString.Length];
Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length);
String AsBase64String = Convert.ToBase64String(AsBytes);
byte[] tempBytes = Convert.FromBase64String(AsBase64String);
File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes);
}
FileInfo orig = new FileInfo("C:\...\file.tar.gz");
FileInfo copy = new FileInfo("C:\...\file_copy.tar.gz");
// Confirm that both original and copy file have the same number of bytes
return (orig.Length) == (copy.Length);
}
সম্পাদনা: কাজের উদাহরণটি অনেক সহজ (@ টিএসএসকে ধন্যবাদ):
Boolean MyMethod(){
byte[] AsBytes = File.ReadAllBytes(@"C:\...\file.tar.gz");
String AsBase64String = Convert.ToBase64String(AsBytes);
byte[] tempBytes = Convert.FromBase64String(AsBase64String);
File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes);
FileInfo orig = new FileInfo(@"C:\...\file.tar.gz");
FileInfo copy = new FileInfo(@"C:\...\file_copy.tar.gz");
// Confirm that both original and copy file have the same number of bytes
return (orig.Length) == (copy.Length);
}
ধন্যবাদ!
আপনি কেবল এমন একটি সংকোচিত ফাইলের সামগ্রী পরিবর্তন করতে পারবেন না। আপনাকে কেবল ফাইলটি সরাসরি যেমন পড়তে হবে তার পরিবর্তে ধাপ 1 এ ফাইলটি সঙ্কুচিত করতে হবে। এবং তারপর 5 ধাপে একইভাবে কেবল বাইটগুলি সরাসরি লেখার পরিবর্তে ডেটা পুনরায় সংক্ষেপণ করতে হবে।
—
itme86
সৌভাগ্যক্রমে, ফাইলটির নিজেই কোনও আসল হেরফের ছিল না (মূলত এটি কেবল বিন্দু A থেকে B এ সরিয়ে নিয়েছে) এই বিশেষ
—
টাস্কটির