在android上写文件是不可能的

我正在使用以下代码将一些内容写入外部文件:


public class DiskWriter {


    public static String TAG = "DiskWriter";


    public static void writeStringToDisk(String jsonString) {

        File root = android.os.Environment.getExternalStorageDirectory();

        File dir = new File (root.getAbsolutePath() + "/JSONFolder");

        dir.mkdirs();

        DateFormat df = new SimpleDateFormat("yyyyMMdd-HHmmss.SSS");

        File file = new File( dir, "/json-" + df.format(new Date(System.currentTimeMillis())) + ".txt");

        Log.e(TAG, "Writing file to " + file.getAbsolutePath());

        try {

            file.createNewFile();

            FileOutputStream f = new FileOutputStream(file);

            PrintWriter pw = new PrintWriter(f);

            pw.println(jsonString);

            pw.flush();

            pw.close();

            f.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

另外,在我的清单中,我添加了以下权限:


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

我还尝试了此代码的几种变体。但是,它永远不会起作用。这是输出:


E/DiskWriter: Writing file to /storage/emulated/0/JSONFolder/json-20190306-190419.289.txt

W/System.err: java.io.IOException: No such file or directory

W/System.err:     at java.io.UnixFileSystem.createFileExclusively0(Native Method)

W/System.err:     at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)

W/System.err:     at java.io.File.createNewFile(File.java:1345)

W/System.err:     at app.generic.logic.DiskWriter.writeStringToDisk(DiskWriter.java:28)

W/System.err:     at app.generic.logic.JSONParser.doInBackground(JSONParser.java:48)

W/System.err:     at app.generic.logic.JSONParser.doInBackground(JSONParser.java:36)

W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:333)


我在我的设备(Oneplus 6T)上使用 Android 9,它没有植根或类似的东西。


智慧大石
浏览 139回答 1
1回答

摇曳的蔷薇

您需要请求在外部存储上写入的权限。仅仅在清单中列出它是不够的。在这里查看权限系统的解释:https ://developer.android.com/guide/topics/permissions/overview有关如何请求权限的信息,请参阅https://developer.android.com/training/permissions/requesting.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java