【问题标题】:Impossible to create file on external storage Android无法在外部存储 Android 上创建文件
【发布时间】:2011-03-21 06:10:11
【问题描述】:

我想创建一个 .txt 文件并将其存储在 Android 手机的外部存储中。我将权限添加到我的 Android 清单中。当我运行代码时,它不会给我任何错误,但永远不会创建文件。不知道我做错了什么。

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    您需要适当的权限:

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

    【讨论】:

    • 是的,我在 Android Manifest 上做了许可。
    • 啊错过了这个,把我逼疯了!
    【解决方案2】:
    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呢?
    【解决方案3】:

    我能够使用以下代码在外部存储上创建文件:

    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呢?
    猜你喜欢
    • 2014-04-17
    • 2016-07-21
    • 2020-11-17
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多