黑马程序员技术交流社区
标题:
两种方式有什么根本区别么 求解!!
[打印本页]
作者:
孙松林
时间:
2012-10-29 19:46
标题:
两种方式有什么根本区别么 求解!!
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTextByBufferTest {
public static void main(String[] args) throws IOException {
FileReader fr =new FileReader("demo.txt");
BufferedReader bufr = new BufferedReader(fr);
FileWriter fw =new FileWriter("copy.txt");
BufferedWriter bufw = new BufferedWriter(fw);
String line = null;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTextByBufferTest {
public static void main(String[] args) throws IOException {
FileReader fr = null;
BufferedReader bufr = null;
FileWriter fw = null;
BufferedWriter bufw = null;
fr = new FileReader("demo.txt");
bufr = new BufferedReader(fr);
fw = new FileWriter("copy.txt");
bufw = new BufferedWriter(fw);
String line = null;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
}
作者:
崔政
时间:
2012-10-29 19:59
区别好像仅仅是一个是直接创建好对象,一个是先创建引用,然后再指向对象。
因为你的写法是在主函数上直接抛了,如果你是用trycatch你就看出区别了
package day19;
import java.io.*;
public class Test2 {
public static void main(String[] args) {
FileReader fr = null;
BufferedReader bufr = null;//因为创建的时候可能会抛出异常,所以先null,这样是没问题的
FileWriter fw = null;
BufferedWriter bufw = null;
try{
fr = new FileReader("demo.txt");
bufr = new BufferedReader(fr);
fw = new FileWriter("copy.txt");
bufw = new BufferedWriter(fw);
String line = null;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}catch(IOException e)
{
throw new RuntimeException("复制文件出错!");
}finally{
//因为BufferedReader和BufferedWriter必须要关闭,所以放在finally里边
try{
bufr.close();//如果你用的是直接new对象,引用在try块里边,在finally无法用到bufr,bufw同理
}catch(IOException e1){
throw new RuntimeException("读取关闭失败");
}
try{
bufw.close();
}catch(IOException e1){
throw new RuntimeException("写入关闭失败");
}
}
}
}
复制代码
作者:
刘丽娜
时间:
2012-10-29 20:02
没什么本质区别吧 只是先声明 和后生命的区别吧
作者:
杨千里
时间:
2012-10-29 20:17
我认为:
第一种做法,抛出异常,不处理,有点懒,在开发时,应该处理。
第二种做法,多余,没有多大用处。
我觉得这样做比较合适:
package java_9_1;
import java.io.*;
public class CopyTextByBufferTest {
public static void main(String[] args){
//FileReader fr = null;
//FileWriter fw = null;
BufferedReader bufr = null;
BufferedWriter bufw = null;
try{
//fr = new FileReader("F:\\io\\demo.txt");
bufr = new BufferedReader(new FileReader("F:\\io\\demo.txt"));
//fw = new FileWriter("F:\\io\\copy.txt");
bufw = new BufferedWriter(new FileWriter("F:\\io\\copy.txt"));
String line = null;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}catch(IOException e){
throw new RuntimeException("文件copy失败");
}
finally{
//finally 区域:一定要执行的代码,通常是用在关闭资源。 关闭资源之前应该判断一下,该资源存在不存在。如果不存在,会发生异常。
if(bufw!=null)
try{
bufw.close();
}catch(IOException e){
throw new RuntimeException("文件写入关闭失败");
}
if(bufr!=null)
try{
bufr.close();
}catch(IOException e){
throw new RuntimeException("文件读取关闭失败");
}
}
}
}
作者:
孤傲的狼
时间:
2012-10-29 20:22
第二种方式,可以避免出现异常,第一种方法则不会。其他的我就不清楚了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2