কেন সমস্যাটি ছিল: যেমন কেউ ইতিমধ্যে নির্দিষ্ট করেছে:
আপনি যদি বাইট দিয়ে শুরু করেন [] এবং বাস্তবে এতে পাঠ্যের ডেটা থাকে না, কোনও "যথাযথ রূপান্তর" নেই। স্ট্রিংগুলি পাঠ্যের জন্য, বাইট [] বাইনারি ডেটার জন্য হয় এবং কেবলমাত্র বুদ্ধিমানের কাজ হ'ল যদি আপনি একেবারেই না করেন তবে তাদের মধ্যে রূপান্তর এড়ানো।
আমি এই সমস্যাটি পর্যবেক্ষণ করছিলাম যখন আমি একটি পিডিএফ ফাইল থেকে বাইট [] তৈরি করার চেষ্টা করছিলাম এবং তারপরে এটি স্ট্রিংয়ে রূপান্তরিত করেছিলাম এবং তারপরে স্ট্রিংটিকে ইনপুট হিসাবে নিয়ে যাচ্ছিলাম এবং ফাইলটিতে ফিরে রূপান্তর করছি।
সুতরাং নিশ্চিত হয়ে নিন যে আপনার এনকোডিং এবং ডিকোডিং যুক্তিটি আমার মতো। আমি স্পষ্টভাবে বাইট [] বেস 64 এ এনকোড করেছি এবং ফাইলটি আবার তৈরি করতে ডিকোড করেছি।
ব্যবহারের-কেস:
কারণে কিছু সীমাবদ্ধতা আমি পাঠানো করার চেষ্টা ছিল byte[]এ request(POST)এবং প্রক্রিয়া নিম্নরূপ ছিল:
পিডিএফ ফাইল >> বেস64.encodeBase64 (বাইট []) >> স্ট্রিং >> অনুরোধ প্রেরণ করুন (POST) >> স্ট্রিং পান >> বেস64.decodeBase64 (বাইট []) >> বাইনারি তৈরি করুন
এটি চেষ্টা করুন এবং এটি আমার জন্য কাজ করেছে ..
File file = new File("filePath");
byte[] byteArray = new byte[(int) file.length()];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(byteArray);
String byteArrayStr= new String(Base64.encodeBase64(byteArray));
FileOutputStream fos = new FileOutputStream("newFilePath");
fos.write(Base64.decodeBase64(byteArrayStr.getBytes()));
fos.close();
}
catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
}
catch (IOException e1) {
System.out.println("Error Reading The File.");
e1.printStackTrace();
}
byte[]আপনার বাইনারি ডেটা এবংStringআপনার পাঠ্যের জন্য একটি ব্যবহার করে কী ভুল হয়েছে ?