我目前正在做一个Java项目拼贴,我已经骑到一个问题的位,并希望你们中的一个可以照亮我看不到的东西。以下是我用于将一个Array []写入文件的代码。该阵列本身是[100]。我遇到的问题是我无法理解堆栈告诉你什么或如何解决问题并阻止它。它被调用的文件已被另一类创建的,我已经检查,以确认它写入文件,流关闭错误,Java
public void writeGridToFile() throws IOException {
FileWriter fw = new FileWriter("D:/GridArrayFile.txt");
try {
for(int i = 0; i < 100; i++){
BufferedWriter bw = new BufferedWriter(fw);
bw.write(GridArray[i]);
bw.close();
}
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Error");
}
finally {
//TODO
System.out.println("Finished");
}
}
这是正在打印
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.BufferedWriter.close(Unknown Source)
at playgame.writeGridToFile(playgame.java:195)
at playgame.CreateFile(playgame.java:183)
at playgame$1.actionPerformed(playgame.java:73)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
希望你能找到问题的异常堆栈,也可作为一边注意,如果这是一个简单的快速让我离开我只用了约一年半的Java和它对我来说仍然是非常新的。
您正在关闭循环中的'BufferedWriter',然后关闭底层的'FileWriter' ...因此在下一次迭代中'FileWriter'被关闭。 –
作为旁注:'尝试(BufferedWriter bw = new BufferedWriter(new FileWriter(“D:/GridArrayFile.txt”))){...您的代码}'是java 7+的方法, 每个情况下,异常或正常完成,流将被关闭 – SomeJavaGuy
@SomeJavaGuy谢谢,也得到代码工作以及。我遇到的唯一问题是输出的文件内容与数组内部的数据完全不同。有任何想法吗? –