案例1:
读取一个文件并写入到另一个文件中,char[] 来中转。
首先要在E盘下创建一个文本文档,命名为test.txt,输入一些字符串。
1 public class Demo_5 { 2 3 public static void main(String[] args) { 4 5 FileReader fr=null; //文件取出字符流对象(输入流) 6 FileWriter fw=null; //写入到文件(输出流) 7 8 try { 9 fr=new FileReader("e:\test.txt"); //创建一个fr对象 10 fw=new FileWriter("d:\test.txt"); //创建输出对象 11 12 char []c=new char[1024]; //读入到内存 13 int n=0; //记录实际读取到的字符数 14 while((n=fr.read(c))!=-1){ 15 //String s=new String(c,0,n); 16 fw.write(c,0,n); 17 } 18 } catch (Exception e) { 19 e.printStackTrace(); 20 }finally{ 21 22 try { 23 fr.close(); 24 fw.close(); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 } 29 } 30 }
打开D盘的test.txt文件,出现相同的字符串。
案例2:为了提高效率引入了缓冲字符流
依然实现读取一个文件并写入到另一个文件中,直接操作String。
1 public class Demo_6 { 2 3 public static void main(String[] args) { 4 5 BufferedReader br=null; 6 BufferedWriter bw=null; 7 8 try{ 9 FileReader fr=new FileReader("e:\test.txt"); //先创建FileReader对象 10 br=new BufferedReader(fr); 11 12 FileWriter fw=new FileWriter("d:\test1.txt"); //创建FileWriter对象 13 bw=new BufferedWriter(fw); 14 15 String s=""; 16 while((s=br.readLine())!=null){ //循环读取文件,s不为空即还未读完毕 17 bw.write(s+" "); //输出到磁盘,加上“ ”为了实现换行 18 } 19 }catch(Exception e){ 20 e.printStackTrace(); 21 }finally{ 22 23 try { 24 br.close(); 25 bw.close(); 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 } 30 } 31 }
打开D盘的test1.txt文件,出现相同的字符串。
总结:字节流操作对象byte,字符流操作对象char,缓冲字符流操作对象String。