无法在Android外部存储创建文件

4

我想创建一个.txt文件并将其存储在安卓手机的外部存储器中。我已经在我的安卓清单中添加了权限。当我运行代码时,没有任何错误提示,但是文件从未被创建。不确定我做错了什么。

public void createExternalStoragePrivateFile(String data) {
    // Create a path where we will place our private file on external
    // storage.
    File file = new File(myContext.getExternalFilesDir(null), "state.txt");

    try {

        FileOutputStream os = null; 
        OutputStreamWriter out = null;
        os = myContext.openFileOutput(data, Context.MODE_PRIVATE);
        out = new OutputStreamWriter(os);
        out.write(data);
        os.close();

        if(hasExternalStoragePrivateFile()) {
            Log.w("ExternalStorageFileCreation", "File Created");
        } else {
            Log.w("ExternalStorageFileCreation", "File Not Created");
        }

    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}
3个回答

13

你需要适当的权限:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

是的,我在Android清单文件中进行了权限设置。 - nyalex5000
啊,错过了这个,让我疯狂了! - rupps

8
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();
}

这将在ExtSdCard/Android/data/packagename/files中创建一个空文件夹。但是,state.txt文本文件被创建在DeviceStorage/Android/data/packagename/files中。那么如何在外部SD卡文件夹中创建state.txt呢? - aslamhossin

0
我使用下面的代码可以在外部存储器上创建文件:
public void createExternalStoragePrivateFile(String data) {
    // Create a path where we will place our private file on external
    // storage.
    File file = new File(myContext.getExternalFilesDir(null), "state.txt");


    try {

        FileOutputStream os = new FileOutputStream(file); 
        OutputStreamWriter out = new OutputStreamWriter(os);

        out.write(data);
        out.close();

        if(hasExternalStoragePrivateFile()) {
            Log.w("ExternalStorageFileCreation", "File Created");
        } else {
            Log.w("ExternalStorageFileCreation", "File Not Created");
        }

    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}

这将在ExtSdCard/Android/data/packagename/files中创建一个空文件夹。但是,state.txt文本文件被创建在DeviceStorage/Android/data/packagename/files中。那么如何在外部SD卡文件夹中创建state.txt呢? - aslamhossin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接