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
看起来很合理。没有异常抛出,代码运行正常,只是没有创建文件!那么,是否正在其他地方创建一个文件,因为我正在调试,或者是什么?我错过了什么吗?
感谢。
答案 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资源管理器....有我的文件。因此,我不知道为什么在没有电源循环设备的情况下我无法看到它们,但它们就在那里。的古怪!! 强>