Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android上编写文件是不可能的_Java_Android_Android External Storage - Fatal编程技术网

Java 在android上编写文件是不可能的

Java 在android上编写文件是不可能的,java,android,android-external-storage,Java,Android,Android External Storage,我使用以下代码将一些内容写入外部文件: public class DiskWriter { public static String TAG = "DiskWriter"; public static void writeStringToDisk(String jsonString) { File root = android.os.Environment.getExternalStorageDirectory(); File dir = ne

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

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" />

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

您需要请求在外部存储器上写入的权限。仅仅在清单中列出它是不够的

请参见此处的权限系统说明:


有关如何请求权限的信息,请参见

您需要请求对外部存储器的写入权限。仅仅在清单中列出它是不够的

请参见此处的权限系统说明:


有关如何请求权限的信息,请参见

我想可能是因为您在几秒钟内有一个点
yyymmdd HHmmss.SSS
?看起来对
mkdirs()
的调用不起作用。此方法调用返回一个您应该检查的
boolean
结果。我假设它返回的是
false
,这就是为什么会出现以下异常。我想可能是因为秒内有一个点
yyyyMMdd HHmmss.SSS
?看起来对
mkdirs()
的调用不起作用。此方法调用返回一个您应该检查的
boolean
结果。我假设它返回的是
false
,这就是为什么会得到下面的exception.OMG。我完全忘了。。。哈哈。谢谢你,伙计!现在很好,天哪,当然。我完全忘了。。。哈哈。谢谢你,伙计!现在一切正常。
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)
W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err:     at java.lang.Thread.run(Thread.java:764)