继承人代码:这个FileWriter是如何工作的?
import java.io.*;
public class FileCharCopier
{
public static void main(String args[]) throws IOException
{
File f1=new File("scjp.txt");
File f2=new File("scjpcopy.txt");
FileReader in=new FileReader(f1);
FileWriter out=new FileWriter(f2);
int c;
while((c=in.read())!=1)
{
out.write(c);
in.close();
out.flush();
out.close();
}
}
}
我在同一个目录都SCJP和scjpcopy.txt
但是当我运行该程序,我得到这些错误:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at FileCharCopier.main(FileCharCopier.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
线18指的是
out.write(c);
有人可以纠正错误吗?
你已经关闭了第一个循环中的输入和输出流,所以在第二个循环中,它引起异常 – MadProgrammer
除了注释中指出的基本错误以外,您肯定不应该在时间。应该使用一个字符数组: '而((计数= in.read(阵列))> 0)out.write(阵列,0,计数);'这是很多倍。或者是一个BufferedReader和一个BufferedWriter。 – EJP