将文本文件保存到 Android 中的公共内部存储器位置
Posted
技术标签:
【中文标题】将文本文件保存到 Android 中的公共内部存储器位置【英文标题】:Saving a text file to public internal memory location in Android 【发布时间】:2015-09-16 13:35:46 【问题描述】:我正在编写一个应用程序,我想在其中附加一个文本文件,因为会发生各种用户操作。我希望文本文件位于内部存储器中。如果用户使用 USB 电缆连接平板电脑,我希望文本文件在 Windows 资源管理器下也可见。
我查看了很多示例,并且能够将文本文件写入内存,但我似乎无法使文件在文件管理器中可见。
有谁知道是否可以将文本文件写入内部存储器,并让用户在 Windows 资源管理器下看到它?还是我需要使用 SD 卡而不是内存?
【问题讨论】:
【参考方案1】:好的,我现在可以按我的意愿工作了。它将文本文件(并在每次写入时附加)保存到平板电脑/手机的不可移动的 DOWNLOAD 文件夹中。我的目标是最低 SDK 版本为 16(4.1.2 Jellybean)。
我将在下面发布代码,以供其他对此问题感到困惑的人使用。
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();
您还需要在清单中添加以下行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您需要导入:
import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
import java.io.File;
【讨论】:
【参考方案2】:我希望文本文件位于内存中。
从编程的角度来看,“内部存储器”没有太多意义。
如果用户使用 USB 电缆连接平板电脑,我希望文本文件也能在 Windows 资源管理器中显示。
那就是external storage。
但我似乎无法在文件管理器中显示该文件。
使用MediaScannerConnection
及其scanFile()
方法告诉MediaStore
该文件。这至少可以让 MTP 客户端(如 Windows 的资源管理器窗口)看到该文件。请注意,您可能需要在该资源管理器窗口中“刷新”或“重新加载”才能让 Windows 获取新文件。
【讨论】:
“内部存储器”是指平板电脑的内部闪存(与 SD 卡相对)。 @rittenhk:是的,但是从Android SDK的角度来看,您所说的“内存”是指internal storage(http://commonsware.com/blog/2014/04/07/storage-situation-internal-storage.html) and [external storage。在 Android SDK 完全支持的范围内,SD 卡是removable storage。您的“出现在 Windows 中”要求意味着外部存储就是您想要的。 好的,我现在看到了不同之处。谢谢! 我很想做'rittenhk'的工作,但我的设备没有SD卡和USB,我该怎么办??? @CommonsWare @saulyasar:如果没有 USB,那么我不知道 Windows 文件资源管理器将如何查看内容。您可能需要向您的设备制造商寻求建议。以上是关于将文本文件保存到 Android 中的公共内部存储器位置的主要内容,如果未能解决你的问题,请参考以下文章
Java / Android - 读取、操作 XML 文件并将其保存到内部存储