繁体   English   中英

如何在Android上的外部存储设备上将文本写入文件?

[英]How to write text to a file on external storage on android?

在Android设备上向文件中写入一些文本似乎是一项主要工作。 此处给出的答案开始,我已将以下代码实现到我的单个“ Hello-World”活动中:

try {
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.openFileOutput("config.txt", Context.MODE_PRIVATE));
    outputStreamWriter.write("lalala");
    outputStreamWriter.close();
} catch (IOException e) {
    Log.e("Exception", "File write failed: " + e.toString());
}

这不会引发异常,但似乎可以工作。 但是,有没有一种方法可以“查看”使用Android上的File Manager创建的File Manager 该代码段似乎写入了与应用程序本身相关的android文件系统上的“秘密”位置(通过使用this.openFileOutput进行this.openFileOutput )。

咨询不同的google-links( this 和this 和this ),我想出了以下代码:

File file = new File(this.getExternalFilesDir("temp"), "testfile.txt");
FileOutputStream fileOutput = openFileOutput(file.getName(), Context.MODE_WORLD_WRITEABLE);
fileOutput.write("lalala");
fileOutput.close();

引发错误

Error:(55, 19) error: no suitable method found for write(String) method FileOutputStream.write(int) is not applicable (actual argument String cannot be converted to int by method invocation conversion) method FileOutputStream.write(byte[],int,int) is not applicable (actual and formal argument lists differ in length) method OutputStream.write(int) is not applicable (actual argument String cannot be converted to int by method invocation conversion) method OutputStream.write(byte[],int,int) is not applicable (actual and formal argument lists differ in length) method OutputStream.write(byte[]) is not applicable (actual argument String cannot be converted to byte[] by method invocation conversion)

那么如何做到这一点呢?

附带说明:这仅用于调试/教育目的,并不打算成为最终应用程序的一部分!

明确说明:我想在使用FileManager可以看到的temp目录中创建文件( temp目录与“ My Documents ,“ Music ,“ DCIM ,“ Download ”等处于同一级别)。

但是,有没有一种方法可以“查看”使用Android上的文件管理器创建的文件?

我不确定您指的是“文件管理器”,因为Android确实没有。 但是,您正在写入应用程序的内部存储 ,这是该应用程序专用的。 除非在具有root用户权限的设备上以及通过一些笨拙的Android SDK工具,否则其他应用或普通用户都无法查看它。

那么如何做到这一点呢?

File file = new File(this.getExternalFilesDir(null), "testfile.txt");
FileOutputStream fileOutput = new FileOutputStream(file);
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutput);
outputStreamWriter.write("lalala");
outputStreamWriter.flush();
fileOutput.getFD().sync();
outputStreamWriter.close();

也:

  • 请在后台线程上执行此工作

  • 在Android 4.3(API级别18)和WRITE_EXTERNAL_STORAGE版本的设备上,您需要持有WRITE_EXTERNAL_STORAGE权限才能使用外部存储

如果您还希望此文件在设备或开发机器上的文件管理器中快速显示,请在关闭文件后使用此文件:

MediaScannerConnection.scanFile(
  this,
  new String[]{file.getAbsolutePath()},
  null,
  null);

this是一些Context ,例如ActivityService

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM