2016-08-28 7 views
0

В настоящее время у меня есть этот код, где я копирую пасту из here в свой исходный код. Но по какой-то неизвестной мне причине OutputStreamWriter продолжают давать IOException. И я не знаю, почему и как это исправить. Пожалуйста помоги. Ниже мой код.OutputStreamWriter IOException возникает

public void generateNoteOnSD(){// create a File object for the parent directory 
    try { 
     File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     File myFile = new File(path, "mytextfile.txt"); 
     FileOutputStream fOut = new FileOutputStream(myFile,true); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
     myOutWriter.append("the text I want added to the file"); 

     Log.d("Save File Test : ","Success"); 

     myOutWriter.close(); 
     fOut.close(); 
    } 
    catch (IOException e) { 
     //do something if an IOException occurs. 
     Log.d("Save File Test : ","Failed"); 
    } 
} 

Я уже включены

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

в манифесте, а также выполнения кода в AsyncTask - onPostExecute и AVD с Lollipop версии.

Мой StackTrace:

08-28 11:22:52.788 30478-30478/com.example.azrie.dummyvoice E/YOUR_APP_LOG_TAG: I got an error 
java.io.FileNotFoundException: /storage/emulated/0/Download/mytextfile.txt: open failed: EACCES (Permission denied) 
at libcore.io.IoBridge.open(IoBridge.java:452) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
at com.example.azrie.dummyvoice.ReadHTML.generateNoteOnSD(ReadHTML.java:126) 
at com.example.azrie.dummyvoice.ReadHTML.onPostExecute(ReadHTML.java:78) 
at com.example.azrie.dummyvoice.ReadHTML.onPostExecute(ReadHTML.java:37) 
at android.os.AsyncTask.finish(AsyncTask.java:651) 
at android.os.AsyncTask.-wrap1(AsyncTask.java) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 
at libcore.io.Posix.open(Native Method) 
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
at libcore.io.IoBridge.open(IoBridge.java:438) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:87)  
at com.example.azrie.dummyvoice.ReadHTML.generateNoteOnSD(ReadHTML.java:126)  
at com.example.azrie.dummyvoice.ReadHTML.onPostExecute(ReadHTML.java:78)  
at com.example.azrie.dummyvoice.ReadHTML.onPostExecute(ReadHTML.java:37)  
at android.os.AsyncTask.finish(AsyncTask.java:651)  
at android.os.AsyncTask.-wrap1(AsyncTask.java)  
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

Возможно, если вы предоставите stacktrace вашего IOException, мы сможем помочь –

+0

Здравствуйте. Я добавил свой стек. Спасибо. –

+1

это может помочь http://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android –

ответ

-1
private static final String FILE_NAME="score.txt"; 
BufferedOutputStream o; 
       try { 
        o = new BufferedOutputStream(new FileOutputStream(new File(getFilesDir(),FILE_NAME))); 
        String s = //here write what you want to write to the file . its got to be string to work 
        o.write(s.getBytes()); 
        o.close(); 
       }catch (FileNotFoundException e){ 

       }catch (IOException e){ 

       } 

для меня свою работу каждый раз, и его не открывать новый файл каждый раз. , если вы хотите увидеть его в действии PictureWithMath в игровом магазине. вам нужно будет полностью перезапустить приложение после первого входа в систему и его записи на главном экране, и пока игра будет выполняться каждый раз, когда вы выиграете