Java中字节流和字符流复制文件

字节流和字符流复制文件的过程:

  1、建立两个流对象 绑定数据源和目的地

  2、遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的)

  3、访问结束后关闭资源

字节流复制文件:

 1 package com.aaa.demo4;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class StreamCopy {
 9     public static void main(String[] args) {
10         //1、建立两个流对象 绑定数据源和目的地
11         FileInputStream fis=null;//绑定数据源
12         FileOutputStream fos=null;//绑定目的地
13         try {
14             fis=new FileInputStream("c:\\aaa.txt");//绑定需要复制的文件,也就是文件源
15             fos=new FileOutputStream("d:\\sfs.txt");//复制过后的位置和文件名,也就是目的地
16             //遍历出需复制的文件的字节,一个字节一个字节的写入复制过后的新文件中
17             int len=0;
18             while((len=fis.read())!=-1){
19                 fos.write(len);
20             }
21             
22         } catch (Exception e) {
23             // TODO Auto-generated catch block
24             System.out.println("文件复制失败!");
25         }finally{
26             //资源访问过后关闭,先创建的后关闭,后创建的先关闭
27             if(fos!=null){//资源初始化为null,使用了该资源这步就是判断资源是否被调用了,如果调用就关闭,如果未调用就不需要关闭
28                 try {
29                     fos.close();
30                 } catch (IOException e) {
31                     e.printStackTrace();
32                 }finally{
33                     if(fis==null){
34                         try {
35                             fis.close();
36                         } catch (IOException e) {
37                             System.out.println("释放资源失败");
38                         }
39                     }
40                 }
41             }
42         }
43     }
44 }

字符流复制文件:

 1 package com.aaa.demo4;
 2 
 3 import java.io.FileReader;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 public class ReaderCopy {
 8     public static void main(String[] args) {
 9         //1、建立两个流对象 绑定数据源和目的地
10         FileReader fileReader=null;
11         FileWriter fileWriter=null;
12         try {
13             fileReader=new FileReader("c:\\aa.txt");
14             fileWriter=new FileWriter("d:\\sdf.txt");
15             char[] a=new char[1024];
16             int len=0;
17             //遍历出需复制的文件的字符,一个字符一个字符的写入复制过后的新文件中
18             while((len=fileReader.read())!=-1){
19                 fileWriter.write(a,0,len);
20                 fileWriter.flush();
21             }
22         } catch (Exception e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25             //资源访问过后关闭,先创建的后关闭,后创建的先关闭
26         }finally{
27             if(fileWriter!=null){
28                 try {
29                     fileWriter.close();
30                 } catch (IOException e) {
31                     // TODO Auto-generated catch block
32                     e.printStackTrace();
33                 }finally{
34                     if(fileReader!=null){
35                         try {
36                             fileReader.close();
37                         } catch (IOException e) {
38                             throw new RuntimeException("关闭失败");
39                         }
40                     }
41                 }
42             }
43         }
44     }
45 }

猜你喜欢

转载自www.cnblogs.com/yanpingping/p/10595178.html