我有一个编码为base64 String的图像,我想在另一个活动中传递它, 由于Intent中额外的大小限制,我使用此代码将其存储在临时文件
中FileOutputStream fos;
try {
fos = openFileOutput(imagefilename, Context.MODE_PRIVATE);
try {
fos.write(encodedPhoto.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
我已经在另一个活动
中传递了 imagefilename在新的Activity中,我使用了这段代码来阅读它
try {
FileInputStream fis = openFileInput(imagefilename);
String strLine = null;
StringBuffer buffer = new StringBuffer();
DataInputStream dataIO = new DataInputStream(fis);
if ((strLine = dataIO.readLine()) != null) {
buffer.append(strLine);
}
dataIO.close();
fis.close();
encodedPhoto = strLine;
} catch (NullPointerException e) {
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是这样我无法正确读取原始编码的Base64照片...
我没有收到任何错误,但编码图像的字符串( encodedPhoto )读取,似乎已损坏
我如何解决这个问题?
答案 0 :(得分:2)
您的阅读方法有误,
尝试使用此代码:
try {
FileInputStream fis = openFileInput(imagefilename);
String line = null;
StringBuilder buffer = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(fis));
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
fis.close();
encodedPhoto = buffer.toString();
} catch (NullPointerException e) {
} catch (IOException e) {
e.printStackTrace();
}
通过这种方式,您无需修改即可读取文件的String内容。