首页 > 代码库 > 关于文件的复制(用InputStream和OutputStream)
关于文件的复制(用InputStream和OutputStream)
作业:将c盘的一个文本文件复制到d盘。
分析:复制原理:读取c盘文件中的数据,将这些数据写入到d盘当中,连读带写。
/*
* 需求:作业:将c盘的一个文本文件复制到d盘。
* 思路:
* 1,需要读取源,
* 2,将读到的源数据写入到目的地。
* 3,既然是操作文本数据,使用字符流。
*/
第一种方式:
1 public class CopyTextTest { 2 public static void main(String[] args) throws IOException { 3 //1,读取一个已有的文本文件,使用字符读取流和文件相关联。 4 FileReader fr = new FileReader("IO流_2.txt"); 5 //2,创建一个目的,用于存储读到数据。 6 FileWriter fw = new FileWriter("copytext_1.txt"); 7 //3,频繁的读写操作。 8 int ch = 0; 9 while((ch=fr.read())!=-1){10 fw.write(ch);11 }12 //4,关闭流资源。 13 fw.close();14 fr.close();15 }16 }
第二种方式:(循环次数少,效率高。)
1 public class CopyTextTest_2 { 2 private static final int BUFFER_SIZE = 1024; 3 public static void main(String[] args) { 4 FileReader fr = null; 5 FileWriter fw = null; 6 try { 7 fr = new FileReader("IO流_2.txt"); 8 fw = new FileWriter("copytest_2.txt"); 9 //创建一个临时容器,用于缓存读取到的字符。10 char[] buf = new char[BUFFER_SIZE];//这就是缓冲区。 11 //定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数)12 int len = 0;13 while((len=fr.read(buf))!=-1){14 fw.write(buf, 0, len);15 }16 } catch (Exception e) {17 // System.out.println("读写失败");18 throw new RuntimeException("读写失败");19 }finally{20 if(fw!=null)21 try {22 fw.close();23 } catch (IOException e) {24 25 e.printStackTrace();26 }27 if(fr!=null)28 try {29 fr.close();30 } catch (IOException e) {31 32 e.printStackTrace();33 }34 }35 }36 }
原理图:
有缓冲区可以提高效率。
java中把缓冲区封装了。
缓冲区的出现提高了文件的读写效率。
关闭缓冲区就是关闭的被缓冲的流对象!
所以只需要关闭缓冲区就可以,不必要再关闭流了。
复制文件用缓冲区的方式.
1 public class CopyTextByBufTest { 2 public static void main(String[] args) throws IOException { 3 FileReader fr = new FileReader("buf.txt"); 4 BufferedReader bufr = new BufferedReader(fr); 5 6 FileWriter fw = new FileWriter("buf_copy.txt"); 7 BufferedWriter bufw = new BufferedWriter(fw); 8 9 String line = null;10 while((line=bufr.readLine())!=null){11 bufw.write(line);12 bufw.newLine();13 bufw.flush();14 }15 /*16 int ch = 0;17 while((ch=bufr.read())!=-1){18 bufw.write(ch);19 }20 */21 bufw.close();22 bufr.close();23 }24 }
关于文件的复制(用InputStream和OutputStream)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。