关于FileWriter例子的一个小问题! 5
下面代码错在哪里?demo的代码:importjava.io.*;publicclassFileWriterDemo{/***@paramargs*/publicstat...
下面代码错在哪里?demo的代码:
import java.io.*;
public class FileWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int b = 0;
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:/FileReaderDemo.java");
fw = new FileWriter("c:/wd.txt");
while ((b = fr.read()) != -1) {
fw.write(b);
fr.close();
fw.close();
}
} catch (FileNotFoundException e1) {
System.out.println("找不到指定文件");
System.exit(-1);
} catch (IOException e2) {
e2.getStackTrace();
System.out.println("文件复制出错!");
System.exit(-1);
}
System.out.println("文件复制成功!");
System.exit(-1);
}
}
为什么执行后显示的是“文件复制出错”,哪里需要修改一下!!及为什么! 展开
import java.io.*;
public class FileWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int b = 0;
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:/FileReaderDemo.java");
fw = new FileWriter("c:/wd.txt");
while ((b = fr.read()) != -1) {
fw.write(b);
fr.close();
fw.close();
}
} catch (FileNotFoundException e1) {
System.out.println("找不到指定文件");
System.exit(-1);
} catch (IOException e2) {
e2.getStackTrace();
System.out.println("文件复制出错!");
System.exit(-1);
}
System.out.println("文件复制成功!");
System.exit(-1);
}
}
为什么执行后显示的是“文件复制出错”,哪里需要修改一下!!及为什么! 展开
2个回答
展开全部
public class FileWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int b = 0;
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:/FileReaderDemo.java");
fw = new FileWriter("c:/wd.txt");
while ((b = fr.read()) != -1) {
fw.write(b);
}
fw.flush();
} catch (FileNotFoundException e1) {
try {
fr.close();
fw.close();
System.out.println("找不到指定文件");
System.exit(-1);
} catch (IOException ex) {
Logger.getLogger(FileWriterDemo.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException e2) {
try {
fr.close();
fw.close();
e2.getStackTrace();
System.out.println("文件复制出错!");
System.exit(-1);
} catch (IOException ex) {
Logger.getLogger(FileWriterDemo.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("文件复制成功!");
System.exit(-1);
}
}
错误:
while ((b = fr.read()) != -1) {
fw.write(b);
fr.close();
fw.close();
}
流关闭太早,读了一次就给关了,第二次读就IOException异常了。
另外FileWriter要自己刷新缓冲,你可以把fw.flush();这句弄掉,虽然运行成功,但是目标文件里是空的。
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int b = 0;
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:/FileReaderDemo.java");
fw = new FileWriter("c:/wd.txt");
while ((b = fr.read()) != -1) {
fw.write(b);
}
fw.flush();
} catch (FileNotFoundException e1) {
try {
fr.close();
fw.close();
System.out.println("找不到指定文件");
System.exit(-1);
} catch (IOException ex) {
Logger.getLogger(FileWriterDemo.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException e2) {
try {
fr.close();
fw.close();
e2.getStackTrace();
System.out.println("文件复制出错!");
System.exit(-1);
} catch (IOException ex) {
Logger.getLogger(FileWriterDemo.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("文件复制成功!");
System.exit(-1);
}
}
错误:
while ((b = fr.read()) != -1) {
fw.write(b);
fr.close();
fw.close();
}
流关闭太早,读了一次就给关了,第二次读就IOException异常了。
另外FileWriter要自己刷新缓冲,你可以把fw.flush();这句弄掉,虽然运行成功,但是目标文件里是空的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询