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

时间:2015-02-02 14:16:00

标签: android android-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

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

感谢。

2 个答案:

答案 0 :(得分:0)

根据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,请记住根据文档:

  

从KITKAT开始,无需读取或写入任何权限   返回的路径;它总是可以访问调用应用程序。这个   仅适用于为调用的包名生成的路径   应用。要访问属于其他包的路径,   需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE。

答案 1 :(得分:0)

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

我关闭设备电源并重新启动 - 下次我连接USB电缆并查看主机调试机上的Windows资源管理器....有我的文件。因此,我不知道为什么在没有电源循环设备的情况下我无法看到它们,但它们就在那里。的古怪!!