黑马程序员_java IO流

------- android培训java培训、期待与您交流! ----------

1.IO流:

IO流用来处理设备之间的数据传输

Java对数据的操作时通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为两种,字节流与字符流

流按流向分为:输入流,输出流

2.IO流常用基类

2.1字节流的抽象基类

InputStream     OutputStream

2.2字符流的抽象基类

Reader   Writer

注::由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

如:InputStream的子类FileputStream、Reader的子类FIleReader

[java]  view plain copy
  1. import java.io.*;  
  2. class  FileWriterDemo  
  3. {  
  4.     public static void main(String[] args) throws IOException  
  5.     {  
  6.         //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。  
  7.         //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。  
  8.         //其实该步就是在明确数据要存放的目的地。  
  9.         FileWriter fw = new FileWriter("demo.txt");  
  10.   
  11.         //调用write方法,将字符串写入到流中。  
  12.         fw.write("abcde");  
  13.   
  14.         //刷新流对象中的缓冲中的数据。  
  15.         //将数据刷到目的地中。  
  16.         //fw.flush();  
  17.   
  18.   
  19.         //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。  
  20.         //将数据刷到目的地中。  
  21.         //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。  
  22.         fw.close();  
  23.     }  
  24. }  
3.复制文件:

复制的原理:其实就是将一个盘下的文件数据存储到另一个盘中的一个文件中。

步骤:

3.1在盘中创建一个文件,用于存储盘中的文件中的数据

3.2定义读取流和盘中的文件关联

3.3通过不断的读写完成数据存储。


[java]  view plain copy
  1. import java.io.*;  
  2.   
  3. class CopyText   
  4. {  
  5.     public static void main(String[] args) throws IOException  
  6.     {  
  7.         copy_2();  
  8.     }  
  9.   
  10.   
  11.     public static void copy_2()  
  12.     {  
  13.         FileWriter fw = null;  
  14.         FileReader fr = null;  
  15.         try  
  16.         {  
  17.             fw = new FileWriter("SystemDemo_copy.txt");  
  18.             fr = new FileReader("SystemDemo.java");  
  19.   
  20.             char[] buf = new char[1024];  
  21.   
  22.             int len = 0;  
  23.             while((len=fr.read(buf))!=-1)  
  24.             {  
  25.                 fw.write(buf,0,len);  
  26.             }  
  27.         }  
  28.         catch (IOException e)  
  29.         {  
  30.             throw new RuntimeException("读写失败");  
  31.   
  32.         }  
  33.         finally  
  34.         {  
  35.             if(fr!=null)  
  36.                 try  
  37.                 {  
  38.                     fr.close();  
  39.                 }  
  40.                 catch (IOException e)  
  41.                 {  
  42.                 }  
  43.             if(fw!=null)  
  44.                 try  
  45.                 {  
  46.                     fw.close();  
  47.                 }  
  48.                 catch (IOException e)  
  49.                 {  
  50.                 }  
  51.         }  
  52.     }  
  53.   
  54.     //从C盘读一个字符,就往D盘写一个字符。  
  55.     public static void copy_1()throws IOException  
  56.     {  
  57.         //创建目的地。  
  58.         FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");  
  59.   
  60.         //与已有文件关联。  
  61.         FileReader fr = new FileReader("RuntimeDemo.java");  
  62.   
  63.         int ch = 0;  
  64.   
  65.         while((ch=fr.read())!=-1)  
  66.         {  
  67.             fw.write(ch);  
  68.         }  
  69.           
  70.         fw.close();  
  71.         fr.close();  
  72.   
  73.     }  
  74.   
  75.   
  76. }  
4.字符流的缓冲区

缓冲区的出现提高了对数据的读写效率

对应类:bufferedWriter BufferedReader

缓冲区要结合流才可以使用

在流的基础上对流的功能进行了增强。

[java]  view plain copy
  1. /* 
  2. 字符读取流缓冲区: 
  3. 该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。 
  4. 当返回null时,表示读到文件末尾。 
  5.  
  6. readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。 
  7.  
  8.  
  9.  
  10. */  
  11.   
  12. import java.io.*;  
  13.   
  14. class  BufferedReaderDemo  
  15. {  
  16.     public static void main(String[] args) throws IOException  
  17.     {  
  18.         //创建一个读取流对象和文件相关联。  
  19.         FileReader fr = new FileReader("buf.txt");  
  20.   
  21.         //为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。  
  22.         BufferedReader bufr = new BufferedReader(fr);  
  23.           
  24.   
  25.         String line = null;  
  26.   
  27.         while((line=bufr.readLine())!=null)  
  28.         {  
  29.             System.out.print(line);  
  30.         }  
  31.   
  32.   
  33.         bufr.close();  
  34.     }  
  35.   
  36. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值