【问题标题】:Android create a text file on internal storage, email it, then delete the fileAndroid 在内部存储上创建一个文本文件,通过电子邮件发送,然后删除该文件
【发布时间】:2015-07-19 17:10:30
【问题描述】:

我希望能够创建一个包含数据的文本文件,通过电子邮件发送该文件,然后在我的 Android 设备上删除它。

以下是我目前所拥有的,但它给了我错误:

java.io.FileNotFoundException: /20150719_130219: open failed: EROFS (Read-only file system)

代码:

 BufferedWriter writer = null;
    try {
        //create a temporary file
        String report = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
        File logFile = new File(report);

        writer = new BufferedWriter(new FileWriter(logFile));
        for (Map.Entry entry : cbh.data.entrySet()) {
            reportText.append(entry.getKey() + ", " + entry.getValue() + "\n");
            writer.write(entry.getKey() + ", " + entry.getValue() + "\n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            writer.close();
        } catch (Exception e) {
        }
    }

【问题讨论】:

    标签: android bufferedwriter internal-storage


    【解决方案1】:

    首先你需要在你的清单文件中提供权限

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

    在您的代码中,您只是生成文件的名称,但其完整路径未定义保存位置。

    Environment.getExternalStorageDirectory()
    

    将返回sdcard的路径

    你可以这样写

    String report = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
    String fileName = Environment.getExternalStorageDirectory()+ report+".txt";
    File file = new File(fileName); 
    

    【讨论】:

    • 您可以继续使用 OP 的 wisch 来使用内部存储,而不是迁移到外部存储。对于内部存储,请使用 getFilesDir()。您不需要任何权限。
    猜你喜欢
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多