1

我有一个编码为 base64 字符串的图像,我想将它传递给另一个活动,由于 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();

我已经在另一个活动中传递了图像文件名,

在新的活动中,我使用了这段代码来阅读它

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 照片...

我没有收到任何错误,但是读取的编码图像(encodePhoto)的字符串似乎已损坏

我该如何解决这个问题?

4

1 回答 1

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

于 2012-07-30T02:09:51.567 回答