【问题标题】:Android 10 create a folder - getExternalFilesDir instead getExternalStorageDirectory() (deprecated)Android 10 创建文件夹 - getExternalFilesDir 改为 getExternalStorageDirectory()(已弃用)
【发布时间】:2020-08-01 08:18:38
【问题描述】:

我正在尝试使用 context.getExternalFilesDir() 方法在 sdcard 内创建一个新文件夹,但它不起作用,它会创建 Pictures 文件夹,但不会创建 TestFolder 和 txt 文件。我的意图是创建一个文件夹并将从我的应用程序下载的图像放入其中。不幸的是,Environment.getExternalStorageDirectory() 在 API 级别 29 中已弃用,我不知道如何修复它。一如既往,非常感谢您的帮助!

        File folder = new File(getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "TestFolder");
        if (!folder.exists()) {
            folder.mkdirs();
        }


        File filename = new File(folder, "test.txt");
        try {
            filename.createNewFile();
        } catch (Exception e) {
            e.printStackTrace();
        }

【问题讨论】:

  • 请注意,您问题中的代码未显示使用Environment.getExternalStorageDirectory()。它显示了getExternalFilesDir(),它在 Android 4.4 到 10(以及到目前为止,在 Android R)上运行良好。因此,您的问题的标题与问题的主体并不真正匹配。除此之外,查看 Logcat 以查看您是否从异常中获取堆栈跟踪。请记住,createNewFile() 并没有真正做太多事情,也没有真正用于 Android 应用程序开发。
  • 你好。现在标题更适合你?感谢您对 createNewFile 的建议。我的终端没有收到任何错误。
  • “它会创建图片文件夹,但不会创建 TestFolder 和 txt 文件”——您到底在寻找什么?尝试在 Android Studio 中使用设备文件资源管理器。
  • 设备文件资源管理器显示了我之前尝试创建的所有文件和文件夹,谢谢。但是为什么我在我的安卓模拟器中看不到它们呢?我需要访问这些文件。再次感谢您
  • 如果您在图库风格的应用程序中查找这些图像,getExternalFilesDir() 在 Android 10+ 上不会被 MediaStore 索引。 IIRC,它不能MediaStore 索引。如果你想写出图像,尤其是外部存储上的标准公共位置,你可以考虑直接使用MediaStore。我有一堆博客文章,从here开始。

标签: java android file directory deprecated


【解决方案1】:

使用

文件夹 = 新建 File(this.getExternalFilesDir(null).getAbsolutePath(), "TestFolder");

而不是

文件夹 = 新建 文件(getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "测试文件夹");

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2012-04-24
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多