字节流和字符流复制文件的过程:
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 }