【问题标题】:OutputStreamWriter IOException occurs [duplicate]发生 OutputStreamWriter IOException [重复]
【发布时间】:2023-03-24 07:57:02
【问题描述】:

目前我有这段代码,我将粘贴从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) 

【问题讨论】:

  • 也许如果您提供 IOException 的堆栈跟踪,我们可以提供帮助
  • 你好。我添加了我的堆栈跟踪。谢谢。
  • open failed: EACCES (Permission denied)。它就在堆栈跟踪中。您无权打开该文件。例如,文件名可能实际上是一个目录。
  • @EJP 是的。我不知道在 android 23+ 中您需要请求许可,即使您已经在清单中声明了它们。感谢 Nicolas 提供的链接。

标签: java android java-io


【解决方案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){

                }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2012-01-15
    • 2018-06-04
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多