2017-03-12 566 views
2

我想通过我的应用程序在android studio中创建一个.txt文件。 SDK版本10,我的模拟器是Galaxy S7(我不确定这是否有问题)。java.io.FileNotFoundException:/ storage/emulated/0/

我写了下面的类,它不断给我的文件没有例外错误。我搜索了很多并搜索了这个论坛,但他们都没有工作。

请帮忙。

我的班级..

public static void StoreData(String input) throws IOException { 
    File Root = Environment.getExternalStorageDirectory(); 
    Log.d("hello",Root.getAbsolutePath()); 
    File Dir = new File(Root.getAbsoluteFile() + "/testfolder"); 
    if (!Dir.exists()) { 
     Log.d("hello","doesn't exists "+Root.getAbsolutePath()); 
     Dir.mkdir(); 
    } 

    File file = new File(Dir, "Contacts_Google_Sheets.txt"); 
    FileOutputStream fileoutputstream = new FileOutputStream(file); 
    fileoutputstream.write(input.getBytes()); 
    fileoutputstream.close(); 
    Log.d("hello", "writing complete"); 
} 

它不断给人以下错误:

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/testfolder/Contacts_Google_Sheets.txt (No such file or directory) 
W/System.err:  at java.io.FileOutputStream.open(Native Method) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:169) 
W/System.err:  at com.therock.app3_contact_list_googlesheet_public.FileOperations.StoreData(FileOperations.java:55) 
W/System.err:  at com.therock.app3_contact_list_googlesheet_public.GetDataAsyncTask.doInBackground(GetDataAsyncTask.java:64) 
W/System.err:  at com.therock.app3_contact_list_googlesheet_public.GetDataAsyncTask.doInBackground(GetDataAsyncTask.java:33) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:305) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
W/System.err:  at java.lang.Thread.run(Thread.java:761) 
E/EGL_emulation: tid 3410: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x8fe424c0, error=EGL_BAD_MATCH 
+0

确保你有'WRITE_EXTERNAL_STORAGE'权限,包括[在运行时请求它](https://developer.android.com/training/permissions/requesting.html)。 – CommonsWare

+1

我的android清单文件已经具有以下权限..

+0

我读取运行时权限需要SDK版本23+ –

回答

0

确保您有WRITE_EXTERNAL_STORAGE许可,包括要求它在运行时。 -

1

您必须检查运行时权限。如果您想立即测试您的代码,请转至设备的设置,应用程序,your_app,然后从中选择权限。允许权限。你很好去