在Android中将文本文件保存到公共内存位置

在Android中将文本文件保存到公共内存位置,android,text,save,Android,Text,Save,我正在编写一个应用程序,在其中我想附加一个文本文件,因为各种用户操作都会发生。我希望文本文件位于内存中。如果用户使用usb电缆连接平板电脑,我希望文本文件在Windows资源管理器下也可见 我已经看过很多例子,并且能够将文本文件写入内存,但是我似乎无法使文件在文件管理器中可见 是否有人知道是否可以将文本文件写入内存,并让用户在Windows资源管理器下看到它?或者我需要使用SD卡而不是内存 我希望文本文件位于内存中 从编程的角度来看,“内存”没有太多的意义 如果用户使用usb电缆连接平板电脑,我

我正在编写一个应用程序,在其中我想附加一个文本文件,因为各种用户操作都会发生。我希望文本文件位于内存中。如果用户使用usb电缆连接平板电脑,我希望文本文件在Windows资源管理器下也可见

我已经看过很多例子,并且能够将文本文件写入内存,但是我似乎无法使文件在文件管理器中可见

是否有人知道是否可以将文本文件写入内存,并让用户在Windows资源管理器下看到它?或者我需要使用SD卡而不是内存

我希望文本文件位于内存中

从编程的角度来看,“内存”没有太多的意义

如果用户使用usb电缆连接平板电脑,我希望文本文件在Windows资源管理器下也可见

那就好了

但我似乎无法使文件在文件管理器中可见

使用
MediaScannerConnection
及其
scanFile()
方法告诉
MediaStore
有关该文件的信息。这将至少允许MTP客户端(如Windows的资源管理器窗口)可以看到该文件。请注意,您可能需要在资源管理器窗口中“刷新”或“重新加载”,以使Windows拾取新文件

我希望文本文件位于内存中

从编程的角度来看,“内存”没有太多的意义

如果用户使用usb电缆连接平板电脑,我希望文本文件在Windows资源管理器下也可见

那就好了

但我似乎无法使文件在文件管理器中可见


使用
MediaScannerConnection
及其
scanFile()
方法告诉
MediaStore
有关该文件的信息。这将至少允许MTP客户端(如Windows的资源管理器窗口)可以看到该文件。请注意,您可能需要在资源管理器窗口中“刷新”或“重新加载”以使Windows拾取新文件。

好的,我现在可以按我所希望的方式工作了。它会将文本文件(并在每次写入时附加)保存到平板电脑/手机的不可移动下载文件夹中。我的目标是最低SDKversion为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" />

好的,我现在就让它按我所希望的那样工作。它会将文本文件(并在每次写入时附加)保存到平板电脑/手机的不可移动下载文件夹中。我的目标是最低SDKversion为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" />

“内存”是指平板电脑的内部闪存(相对于SD卡)。@rittenhk:是的,但你所谓的“内存”是指从Android SDK的角度来看。如果安卓SDK支持SD卡,则SD卡是可用的。您的“在Windows中显示”要求意味着您需要外部存储。好的,我现在看到了区别。谢谢我确实想做“rittenhk”做的事情,但我的设备没有SD卡和USB,所以我能做什么@CommonsWare@saulyasar:如果没有USB,则我不知道Windows文件资源管理器将如何查看内容。您可能需要向您的设备制造商寻求建议。所谓“内存”,我指的是平板电脑的内部闪存(与SD卡相反)。@rittenhk:是的,但您所谓的“内存”是指从Android SDK的角度来看。如果安卓SDK支持SD卡,则SD卡是可用的。您的“在Windows中显示”要求意味着您需要外部存储。好的,我现在看到了区别。谢谢我确实想做“rittenhk”做的事情,但我的设备没有SD卡和USB,所以我能做什么@CommonsWare@saulyasar:如果没有USB,则我不知道Windows文件资源管理器将如何查看内容。您可能需要向设备制造商寻求建议。