【问题标题】:Can't create new file path in External Storage无法在外部存储中创建新文件路径
【发布时间】:2017-04-12 17:12:27
【问题描述】:

我是 Android 新手,主要使用其他帖子中的 sn-ps 代码来构建我的项目。我很难在我的设备上创建新目录和文件。我正在使用以下代码,但无法验证此路径的创建是否成功。我希望能够将我的手机安装到我的笔记本电脑上,并在文件夹“/My/Files”中找到一个名为“MyRecording.pcm”的文件。我正在使用 mkdirs() 的布尔值来验证路径是否是在我的设备上创建的。如果没有创建该路径,那么我的 TextView 将告诉我“目录不存在”;否则,我的代码将创建文件 MyRecording.pcm。我不断收到错误/警告“mkdirs() 的结果被忽略”。请帮忙。

File path = new File(Environment.getExternalStorageDirectory() + "/My/Files");
    path.mkdirs();
    if(!path.exists()) { statusText.setText("Directories do not exist");}
    else recordingFile = File.createTempFile("MyRecording", ".pcm", path); 

【问题讨论】:

  • 错误是什么/
  • " 我不断收到错误/警告“mkdirs() 的结果被忽略”。 - 如果你愿意,欢迎你忽略它。除此之外,你可能需要runtime permissions,你需要index the file
  • 谢谢@CommonsWare!我不知道 SDK 23+ 中的这些权限,也不知道文件索引。这是个好建议!

标签: android file path android-external-storage


【解决方案1】:

您的清单中是否设置了权限?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

此外,Android Studio 会向您发出有关 mkDirs () 的警告,因为它会返回一个布尔值,指示目录是否已创建。它只是提醒您从未使用过结果。没关系。

【讨论】:

  • 感谢您的回答。我确实确认我已经在我的清单文件中获得了写入外部存储的正确权限。我期待运行此代码,然后当我将手机安装到笔记本电脑时,能够在文件资源管理器中实际找到我的新目录和文件。没有这样的运气。我认为 mkdirs() 实际上会创建这些子文件夹,但它没有,或者我遗漏了一些东西。
  • 我想我明白了,我没有意识到。我的应用程序将规定最低 SDK 为 25。我只是在 SDK 23 及更高版本中读取任何内容,需要显式建立用户权限方法才能真正启用对外部存储的写入。
  • 啊,是的,除了在清单中声明之外,您还必须在运行时实际询问权限。我确定您已经在查看它,但here's 用于实现它的 Android 开发人员页面。他们展示了如何使用兼容性方法一次覆盖所有版本的运行时权限,包括 23 以下。它有助于避免代码中的版本检查
猜你喜欢
  • 2020-11-17
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2014-04-17
  • 2013-06-06
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多