首页 > 解决方案 > Java FileWriter:从代码中删除线程异常

问题描述

使用FileWriter创建文本文件的程序。

import java.io.FileWriter;
import java.io.IOException;

class Wx {
    public static void main(String args[]) throws IOException {
        String str = "Oh ho ho ho oh ho ho ho oh ho ho ho ohho ishq tera tadpaaweee ";
        FileWriter f = new FileWriter("text");
        for (int i = 0; i < str.length(); i++) {
            f.write(str.charAt(i));
            f.close();
        }
    }
}

这个例外来了:

Exception in thread "main" java.io.IOException: Stream closed
        at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:26)
        at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:99)
        at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:94)
        at java.io.OutputStreamWriter.write(OutputStreamWriter.java:177)
        at Wx.main(Wx.java:10)

这个异常一再出现,经过努力无法消除。

标签: javafilewriter

解决方案


您不断关闭 for 循环内的流。将它移到大括号外,如下所示:

import java.io.*;

class Wx {
    public static void main(String args[]) throws IOException {
        String str="Oh ho ho ho oh ho ho ho oh ho ho ho ohho ishq tera tadpaaweee";
        FileWriter f=new FileWriter("text");
        for(int i=0;i<str.length();i++) {
            f.write(str.charAt(i));
        }
        f.close();
    }
}

推荐阅读