2017-03-12 1 views
2

android studio에서 내 응용 프로그램을 통해 .txt 파일을 만들려고합니다. SDK 버전 10, 내 에뮬레이터는 갤럭시 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

[런타임에 요청하기] (https://developer.android.com/training/permissions/requesting.html)를 포함하여 'WRITE_EXTERNAL_STORAGE' 권한이 있는지 확인하십시오. – CommonsWare

+1

내 안드로이드 매니페스트 파일에 이미 사용 권한이 있습니다.

+0

및 SDK 버전 23 이상에 런타임 사용 권한이 필요합니다. –

답변

0

는 런타임에 요청을 포함하여 WRITE_EXTERNAL_STORAGE 권한이 있는지 확인합니다. -

1

런타임에서 권한을 확인해야합니다. 코드를 바로 테스트하려면 장치의 설정, 응용 프로그램, your_app로 이동 한 다음 여기에서 권한을 선택하십시오. 사용 권한을 허용하십시오. 그리고 너는 가야 돼.

관련 문제