समस्या क्यों थी: जैसा कि किसी ने पहले ही निर्दिष्ट किया है:
यदि आप एक बाइट के साथ शुरू करते हैं [] और यह वास्तव में पाठ डेटा नहीं है, तो कोई "उचित रूपांतरण" नहीं है। स्ट्रिंग्स टेक्स्ट के लिए हैं, बाइट [] बाइनरी डेटा के लिए है, और केवल वास्तव में समझदार बात यह है कि जब तक आप पूरी तरह से नहीं होते हैं, तब तक उनके बीच कनवर्ट करने से बचें।
मैं इस समस्या को देख रहा था जब मैं एक पीडीएफ फाइल से बाइट [] बनाने की कोशिश कर रहा था और फिर उसे स्ट्रिंग में परिवर्तित कर रहा था और फिर स्ट्रिंग को इनपुट के रूप में ले रहा था और वापस फाइल में परिवर्तित कर रहा था।
इसलिए सुनिश्चित करें कि आपका एन्कोडिंग और डिकोडिंग तर्क वैसा ही है जैसा मैंने किया था। मैंने स्पष्ट रूप से बाइट [] को बेस 64 पर एनकोड किया और इसे फिर से फाइल बनाने के लिए डीकोड किया।
यूज-केस:
कारण कुछ सीमा के मैं भेजा कोशिश कर रहा था byte[]में request(POST)है और इस प्रक्रिया के रूप में इस प्रकार था:
PDF फ़ाइल >> Base64.encodeBase64 (बाइट []) >> स्ट्रिंग >> रिक्वेस्ट भेजें (POST) >> स्ट्रिंग प्राप्त करें >> Base64.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आपके टेक्स्ट के लिए उपयोग करने में क्या गलत है ?