我正在编写一个应用程序,我想在其中添加一个文本文件,因为会发生各种用户操作。我希望文本文件位于内部存储器中。如果用户使用USB电缆连接平板电脑,我希望在Windows资源管理器中也可以看到该文本文件。
我查看了很多示例,并且能够将文本文件写入内部存储器,但我似乎无法在文件管理器中显示该文件。
有没有人知道是否可以将文本文件写入内部存储器,并在Windows资源管理器下让用户可以看到它?或者我是否需要使用SD卡而不是内部存储器?
答案 0 :(得分:2)
我希望文本文件位于内部存储器中。
“内部记忆”从编程的角度来看没有太多意义。
如果用户使用USB线连接平板电脑,我希望在Windows资源管理器中也可以看到该文本文件。
那将是external storage。
但我似乎无法在文件管理器中显示该文件。
使用MediaScannerConnection
及其scanFile()
方法告诉MediaStore
该文件。这将至少允许文件对Windows浏览器窗口等MTP客户端可见。请注意,您可能需要在该资源管理器窗口中“刷新”或“重新加载”以使Windows获取新文件。
答案 1 :(得分:2)
好的,我现在就按照我想要的方式工作。它将保存文本文件(并在每次写入时将其附加到平板电脑/手机的不可移动的DOWNLOAD文件夹中)。我的目标是最小的版本16(4.1.2 Jellybean)。
我会在下面发布以下代码,供其他对这个问题感到困惑的人。
float
您还需要在Manifest中添加以下行:
if float:
您需要导入:
try {
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS);
File myFile = new File(path, "mytextfile.txt");
FileOutputStream fOut = new FileOutputStream(myFile,true);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append("the text I want added to the file");
myOutWriter.close();
fOut.close();
Toast.makeText(this,"Text file Saved !",Toast.LENGTH_LONG).show();
}
catch (java.io.IOException e) {
//do something if an IOException occurs.
Toast.makeText(this,"ERROR - Text could't be
added",Toast.LENGTH_LONG).show();
}