Android 的新手,努力写入外部存储上的 .csv 文件

New to Android, stuggling to write to .csv file on external storage

Android 4.4.4 编写一个简单的应用程序来学习 Android 编程的基础知识。 运行 一个调试版本(在我的设备上而不是在模拟器中),在 Android Studio 的 USB 调试中,以及在与 USB 断开连接后在设备上。

我只想将文本数据写入外部存储器上的文本文件。现阶段先不管是内存还是SD卡(有安装SD卡)。

我已经在我的清单中设置了 WRITE_EXTERNAL_STORAGE 权限。 我正在检查是否安装了外部存储 - 它是。

我已经尝试了找到的代码 here:

File file = new File(myContext.getExternalFilesDir(null), "state.txt");
  try {

 FileOutputStream os = new FileOutputStream(file, true); 
 OutputStreamWriter out = new OutputStreamWriter(os);
     out.write(data);
 out.close();
}

我将文件名记录到 LOGCAT,它显示为 /storage/emulated/0/Android/data/com.amazed.matthew.brunel/files/file.csv

这看起来很合理。没有抛出异常,代码运行正常,只是没有创建文件!!那么,是因为我处于调试状态还是在其他地方创建了一个文件?我错过了什么吗?

谢谢。

您可以按照 Android 文档中的 this 示例进行操作:

void write() {
    File file = new File(getExternalFilesDir(null), "state.txt");

    try {
        OutputStream os = new FileOutputStream(file);
        os.write(data);
    } catch (IOException e) {
        Log.w("ExternalStorage", "Error writing " + file, e);
    } finally {
        os.close();
    }
}

在不使用 OutputStreamWriter 的情况下,还请记住,根据文档:

Starting in KITKAT, no permissions are required to read or write to the returned path; it's always accessible to the calling app. This only applies to paths generated for package name of the calling application. To access paths belonging to other packages, WRITE_EXTERNAL_STORAGE and/or READ_EXTERNAL_STORAGE are required.

好的,我不完全理解为什么行为如下所述,但基本问题已 解决。

我关闭设备并重新启动 - 下次我连接 USB 电缆并在我的主机调试机器上查看 Windows 资源管理器....那里有我的文件。所以我不知道为什么如果不重新启动设备我就看不到它们,但它们就在那里。 奇怪!!