黑马程序员_IO流(1)

来源:互联网 发布:为什么淘宝贷款用不了 编辑:程序博客网 时间:2024/05/19 00:41

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 

IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流。 
流按流向分为:输入流,输出流。
 
字节流的抽象基类:
InputStream ,OutputStream。
l字符流的抽象基类:
Reader , Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

记忆规则:后缀名表示的是父类,前面表示的操作对象。<A">

输入输出的方向是相对于程序来说的所以input和read是从程序外部读取数据 例如文件,图片,System.in等。output和writer相反。IO体系的类很多都用了装饰模式,装饰模式利用了原有的类,增强了原有类某些方法的功能,同时又不用继承原有类,因此比继承灵活,因为只是功能增强,所以装饰类与被装饰类通常在一个体系中。以Reader与Buffered为例,BufferedReader就是在其构造函数中封装了Reader类对象,并将父类的read方法读到的字符存到类中的StringBuilder中,然后从StringBuilder中一次性读出,减少了磁盘的写操作,提升了写效率。IO操作因为涉及到IO所以会报FileNotFound等异常,所以设计到IO操作就应该进行异常处理。下面是文件拷贝的代码

public class CopyText {public static void main(String[] args) {  BufferedReader fr = null;   BufferedWriter fw = null;   String len=null;  try {   fr = new BufferedReader(new FileReader("F://59633.txt"));   fw = new BufferedWriter(new FileWriter("E:\\filetest.txt"));   while((len = fr.readLine())!= null){    fw.write(len);    fw.newLine();   fw.flush();   }  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }finally{   try {    if(fw!= null)    fw.flush();    fw.close();   } catch (IOException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }finally{    try {     if(fr!= null)     fr.close();     System.out.println("文件复制完成");    } catch (IOException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }   }  } } }


 ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 

原创粉丝点击