调用.exists()时文件确实存在但以后找不到

时间:2013-09-03 13:15:59

标签: android file bitmap directory bitmapfactory

我正在尝试创建一个最终会保存图片的文件(EXTRA_OUTPUT):

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
                      Environment.DIRECTORY_PICTURES), "scouthouse");
            if(!mediaStorageDir.exists()) {
                mediaStorageDir.mkdirs();
            }

            SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
            String format = s.format(new Date());
            File file = new File(mediaStorageDir.getPath() + File.separator + format + ".jpg");
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }

mediaStorageDir.exists()返回true,但我在Windows中找不到该文件夹​​。位置是sdcard0 / Pictures / scouthouse /。我有一个图片/文件夹但Android没有创建/ scouthouse /文件夹。 当我尝试使用Bitmapfactory解码文件时,它返回null。

EDIT!

所以我已经简化了一下这个方法,以便深入到根,并且基本上有这个:

   private void createDir() {
    File file = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "scouthouse");
    if(!file.mkdirs()) {
        Log.d("file", "file not created");
    }   
}

这将创建一个文件目录,并且第一次不记录日志。因此,目录已创建 我无法在任何地方的手机文件系统中找到它。

    private File createNewFile() {
    File file = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "scouthouse" + File.separator + "test.jpg");
    try {
        if(file.createNewFile()) {
            Log.d("file", "yiss");
            return file;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;
}

此方法返回null。无法创建文件..

1 个答案:

答案 0 :(得分:1)

  

mediaStorageDir.exists()返回true,但我在Windows中找不到该文件夹​​。

可能是因为MediaStore不了解目录,因此与Windows的MTP连接不知道该目录。你可以尝试使用MediaScannerConnectionscanFile()来解决这个问题,尽管我只是尝试过文件,而不是目录。此外,即使在建立索引之后,您可能需要从资源管理器窗口执行“刷新”,或断开/重新连接设备,因为Windows可能会缓存MTP结果,即使Android知道它也不会检测到更改。