0

我正在尝试创建一个最终将保存图片(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/。我确实有一个 Pictures/ 文件夹,但 Android 不会创建 /scouthouse/ 文件夹。当我尝试使用 Bitmapfactory 解码文件时,它返回 null。

编辑!

因此,我稍微简化了该方法以深入了解根目录,并且基本上具有以下功能:

   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。无法创建文件。。

4

1 回答 1

1

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

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

于 2013-09-03T13:57:37.300 回答