在android Marshmallow 6.0.1中从外部SD卡读取文件,导致fileNotFoundException打开失败:ENOENT

时间:2016-10-21 11:36:54

标签: android base64 android-6.0-marshmallow

我正在尝试从Android Marshmallow 6.0.1中的外部SD卡读取文件,并希望在Base64中进行转换,但它正在给ENOENT(fileNotFoundException)。但我的相同代码适用于6.0及以下版本。我的代码如下:

private String convertFileToByteArray(File file) { //file path as: /storage/emulated/0/abc.doc
        byte[] byteArray = null;
        try {

            File f=new File(file.toString());
            Log.e("File EXISTs: >>",""+f.exists());

           //getting error in this line,giving fileNotFoundException
            FileInputStream inputStream = new FileInputStream(file); 
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024 * 11];
            int bytesRead = 0;

            while ((bytesRead = inputStream.read(b)) != -1) {
                bos.write(b, 0, bytesRead);
            }

            byteArray = bos.toByteArray();

            Log.e("Byte array", ">" + byteArray);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return Base64.encodeToString(byteArray, Base64.NO_WRAP);
    }

任何人都可以告诉我,我在这里做错了什么。 PS:我也提供运行时权限(读写)。

0 个答案:

没有答案