从临时文件问题加载Base 64图像

时间:2012-07-29 18:22:10

标签: android base64 fileinputstream fileoutputstream

我有一个编码为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 )读取,似乎已损坏

我如何解决这个问题?

1 个答案:

答案 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内容。