我正在使用以下代碼將一些內容寫入外部文件: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.txtW/System.err: java.io.IOException: No such file or directoryW/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,它沒有植根或類似的東西。
1 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
您需要請求在外部存儲上寫入的權限。僅僅在清單中列出它是不夠的。
在這里查看權限系統的解釋:https ://developer.android.com/guide/topics/permissions/overview
有關如何請求權限的信息,請參閱https://developer.android.com/training/permissions/requesting.html
添加回答
舉報
0/150
提交
取消