【问题标题】:Cannot save string to file on android无法将字符串保存到android上的文件
【发布时间】:2017-11-16 19:03:57
【问题描述】:

我正在尝试创建 txt 文件并将其写入 android 的 sdcard 上。我收到“未创建目录”错误。 path.mkdirs() 应该创建所需的目录,不是吗?我在AndroidManifest.xml 中有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,并且我已经开启了应用的存储权限。

安卓版本:7.0

public void addData(View v) {
    wordList.add(inAddWord.getText().toString());

    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
    File file = new File(path, "wordDatabase.txt");

    try {

        if(!(path.exists() && path.isDirectory())) {
            while (!path.mkdir()) {
                Log.e("Path", "Directory not created");
            }
        }

        OutputStream os = new FileOutputStream(file);
        os.write((inAddWord.getText().toString() + "\n").getBytes());
        os.close();


    } catch (IOException e) {
        e.printStackTrace();
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}

【问题讨论】:

  • 您还应该在该 catch 块中放置一个 toast,以便在该 catch 发生时通知用户。
  • while (!path.mkdir()) { Log.e("Path", "Directory not created");。错误代码。如果无法创建目录,您的应用程序将挂起。一次又一次地尝试是没有意义的。将 while 更改为 if。如果 mkdir 失败,并添加一个 toast 以通知用户。并返回。继续下去是没有意义的。请在此处调整您的代码并进行更新。
  • if(!(path.exists() && path.isDirectory())。不,应该是if(!path.exists())
  • 现在可以使用了,谢谢。文件是在我没有查看的内部存储上创建的,因为我认为 Environment.getExternalStoragePublicDirectory() 仅将目录返回到 SD 卡。

标签: android file mkdir


【解决方案1】:

在 Android 6+ 上,您应该添加代码以要求用户确认您在清单中请求的权限。

Google 获取运行时权限。

【讨论】:

  • 当然,您会看到带有“未创建目录”的吐司。如果目录不存在,您应该只调用 mkdir() 或 mkdirs()。此外,您还应该检查 mkdirs() 的返回值,如果未创建目录,则不要继续执行您的代码。然后你应该展示一个祝酒词然后返回。请调整您的代码。对其进行测试,然后在此处调整您的代码。
  • 完成。仍然不起作用。现在应用程序在运行功能后不做任何事情。没有创建文件或目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多