OutputStreamWriter发生IOException

时间:2016-08-28 11:07:12

标签: java android java-io

目前我有这段代码,我将here的粘贴复制到我的源代码中。但由于某些我不了解的原因,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中的代码以及带有Lollipop版本的AVD。

我的堆栈跟踪:

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) 

1 个答案:

答案 0 :(得分:-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){

                }

对我而言,每次都是它的工作,而不是每次都打开新文件。 如果你想在游戏商店中看到它在行动serch FightWithMath。首次登录后,您需要完全重启应用程序,并在主屏幕中进行写入,并在每次获胜时运行游戏