保存的位图不会出现在SD卡上

时间:2013-05-18 20:34:28

标签: android file bitmap save sd-card

我正在开发一个应用程序,我想将一些位图保存到SD卡。我已经查看了很多示例和其他问题,并且我已经制作了以下代码:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
String dirPath = Environment.getExternalStorageDirectory().toString() + "/myFolder";
File dir = new File(dirPath);
dir.mkdirs();
String fileName = "bitmapname.jpg";
File file = new File(dirPath, fileName);
FileOutputStream fileOutPutStream;
try {
    boolean created = file.createNewFile();
    Log.d("Checks", "File created: " + created);
    fileOutPutStream = new FileOutputStream(file);
    fileOutPutStream.write(byteArrayOutputStream.toByteArray());
    fileOutPutStream.close();
} catch (FileNotFoundException e) {
    Log.d("Checks", "FileNotFoundException");
    e.printStackTrace();
} catch (IOException e) {
    Log.d("Checks", "IOException");
    Log.d("Checks", e.getMessage());
    e.printStackTrace();
}

我不明白这段代码有什么问题。它没有给出任何错误,我的应用程序运行没有崩溃。但是,当我将手机连接到计算机并打开SD卡时,我看不到文件夹“myFolder”,我无法在任何地方找到保存的图像。你们有什么想法,为什么会这样?

编辑:我注意到我可以在Android图库中看到已保存的位图,而且它们确实位于名为“myFolder”的文件夹中。但是,当我将手机连接到电脑并浏览我的SD卡时,我仍然看不到它们。

2 个答案:

答案 0 :(得分:1)

根据我的经验,当我在fileOutPutStream.flush();之前忘记close()时,我发了类似的内容。

答案 1 :(得分:1)

您确定要设置写入SD卡的权限吗?尝试设置这个:

   WRITE_EXTERNAL_STORAGE

编辑: 好的,试试这个:

    Environment.getExternalStorageDirectory().getAbsolutePath()

而不是:

    Environment.getExternalStorageDirectory().toString()

甚至可以创建这样的目录:

    File dir = new File(Environment.getExternalStorageDirectory() + 
                        File.separator + 
                        "myFolder");
    dir.mkdirs();