java – Schrodinger的错误,除非手动检查,否则BufferedWriter不
我是一名新手程序员 – 想成为并遇到这个问题我无法找到答案.
我使用 Eclipse,对于程序,我使用了slick和lwjgl-2.9.3 以下代码处于public void update(…)中的状态 我有这部分代码的问题: try{ BufferedWriter bw = new BufferedWriter(new FileWriter("src/file.txt")); bw.write(giveToFile); bw.close(); }catch(IOException e){ e.printStackTrace(); } (编辑: try{ bw = new BufferedWriter(new FileWriter("src/file.txt")); bw.write(giveToFile); bw.flush(); }catch(IOException e){ e.printStackTrace(); }finally { if (bw != null){ try { bw.close(); }catch (Throwable t){ t.printStackTrace(); } } } 产生了同样的bug) 我在try块的末尾放置了一个System.out.print,它运行正常,只运行一次.我还使用了g.drawString,并且giveToFile总是给出预期的String.我执行了以下两个实验. (该程序是一个游戏性的东西,你根据你的表现得到最终得分,并将其置于高分然后重写TXT文件.)(我建议之前阅读TLDR.) 实验1(file.txt:“0 0 0 0 0”)(成功): >我运行该计划并获得15分. 实验2(file.txt:“0 0 0 0 0”)(失败): >我运行该计划并获得15分. TLRD:除非我手动检查,否则程序不会写入TXT文件 有一个错误,但没有,取决于我是否检查txt文件 对不起这个问题很抱歉,对不起,如果它是超级简单的东西,但我是初学者,在互联网上找不到任何解决方案,感谢提前帮助 编辑: 我用它来关闭程序:( xpos和ypos是鼠标坐标)(基本上是原始退出按钮) if((xpos>= 200 && xpos <= 400) && (ypos>=100 && ypos <=200)){ if(Mouse.isButtonDown(0)){ System.exit(0); } } 我得到了这个:(没有例外) Thu Apr 30 16:44:14 CEST 2015 INFO:Slick Build#237 这部分读取文件,没有其他部分对文件做任何事情,读者工作正常: try{ InputStream is = getClass().getResourceAsStream("/file.txt"); Scanner fileIn = new Scanner(is); for(int i=0; i<SCOREMAX; i++){ scoreInt[i] = fileIn.nextInt(); } fileIn.close(); }catch (Exception e) { e.printStackTrace(); } 它位于public void init中,SCOREMAX的类型是public static final int 解决方法
您需要关闭finally块中的BufferedWriter.
或者,您可以在完成写入后在try块中刷新BufferedWriter,尽管关闭操作将首先刷新它. 这是一个重新审视的例子,Java 6风格: BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter("src/file.txt")); bw.write(giveToFile); // bw.flush(); // if needed } catch(IOException e){ e.printStackTrace(); } finally { if (bw != null) { try { bw.close(); } catch (Throwable t) { t.printStackTrace(); } } } …和Java 7风格(“试用”和AutoClosables): try (BufferedWriter bw = new BufferedWriter(new FileWriter("src/file.txt"))) { bw.write(giveToFile); bw.flush(); } catch(IOException e){ e.printStackTrace(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- [经验] 关于 Java 中的非空判断
- java – 当没有调用@Remove注释方法时,有状态会话bean是否会
- java – 如何让spring缓存存储ResponseBody而不是中间对象
- 如何在JLabel中垂直显示文本? (Java 1.6)
- 使用自定义View
- 08-01 java 帮助文档的制作和使用,使用jdk提供的帮助文档
- java – Android:Snackbar给出了ArrayIndexOutOfBoundsExc
- Javaweb开发环境Myeclipse6.5 JDK1.6 Tomcat6.0 SVN1.8配置
- java http请求工具整理
- java编程求二叉树最大路径问题代码分析