| 
 常见流与对象 文件类:       File 打印流           PrintStream    PrintWriter 管道流           PipInputteStream    PipeOutputStream 序列流           SequenceInputStream 对象序列化流       ObjectInputStream ObjectOutputStream   IO流:用于处理设备上的文件 设备:硬盘,内存,键盘录入   IO分类: 1、  根据处理的数据类型不同:字节流和字符流 2、  根据流向不同:输出流和输入流   字符流的由来:因为文件编码的不同,而有了对字符进行高效的字符流对象 原理:其实就是基于字节流去读取字节时,去查了指定的码表。   字节流和字符流的区别: 1、  字节流读取的时候,读到一个字节就返回一个字节。 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。 2、  字节流可以处理所有类型的数据,如图片, mp3, avi。 而字符流只能处理字符数据。   结论:如果只是处理纯文本数据,就要优先考虑使用字符流,除此之外都要使用字节流。   IO体系 1、  字节流 InputStream(读), OutputStream(写) 2、  字符流 Reader(读), Writer(写)     基本的读写操作:        通常数据都是以文件形式存在 所以就要找到IO体系中可以用于操作文件的流对象 通过名称可以更容易获取该对象。  Reader        |---InputStreamReader               |---FileReader:专门用于处理文件的字符读取流对象 Write        |---OutputStreamWriter               |--FileWriter:专门用于处理文件的字符写入流对象  字符流的缓冲区:        为什么要缓冲区:提高对流的操作效率        原理:其实就是对数组进行封装 对应的对象: BufferedWriter        特有方法:                      newline():跨平台的换行符 BufferedReader        特有方法:                      ReadLine():一次读一行,到行标记时,将行标之前的字符数据作为字符型返回。读到末尾时,返回null。   在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的功能而存在,因此在建立缓冲区对象时,要先有流对象存在。 其实缓冲内部就是在使用流对象的方法,只不过加入了数组对数据进行了临时存储。为了提高操作数据的效率。   代码上的体现:        写入缓冲区对象。        //建立缓冲区对象必须把流对象作为参数传递给缓冲区的构造方法。 如:        BufferedWrite bufw = new BufferedWrite (new FileWriter(“Demo.txt”)); Bufw.write(“abcdefg”);         //将数据写入缓冲区 Bufw.flush();                       //对缓冲区的数据进行刷新,将数据刷到目的地中。 Bufw.close();                       //关闭缓冲区,其实关闭的是被包装在内部的流对象。   //读取缓冲对象 BufferedReader bufr = new BufferedReader (new FileReader(“Demo.txt”)); String line = null;   //按照行的形式取出数据。取出的每一行数据不包含回车符。 while ((line = bufr.readLine()) != null) {        System.out.println (line); } bufr.close();  例:通过缓冲区的形式,对文本文件进行拷贝 import java.io.*;   public class Demo3 {        public static void main (String[] args) throws IOException        {               BufferedReader bufr = new BufferedReader(new FileReader("Demo.txt"));               BufferedWriter bufw = new BufferedWriter(new FileWriter("mo.txt"));                            String line = null;                            while ((line = bufr.readLine()) != null)               {                      bufw.write(line);                      bufw.newLine();                      bufw.flush();               }                            bufw.close();               bufr.close();        } }   
 
 |