Day11 缓冲流.转换流.序列化流

1.缓冲输出流:1>概念:增强基本流(字节流,字符流)对象;

                                        BufferedOutputStream是继承OutputStream;

                                        BufferedOutputStream(OutputStream out);

                                        // 创建一个新的缓冲输出流,将数据写入指定的底层输出流中;

                                        BufferedOutputStream(OutputStream out, int size);

                                        // 创建一个新的缓冲输出流,已将具有指定缓冲区大小的数据写入指定的底层输出流参数;

                          2>步骤://1.创建FileOutputStream对象,构造方法中绑定要输出的目的地

                                                 FileOutputStream fos = new FileOutputStream("akdgn\\a.txt);

                                        //2.创建BufferedOutputStream,构造方法中传递FileOutputStream对象,提高效率

                                                 BufferedOutputStream bos = new BufferedOutputStream(fos);

                                        //3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中

                                                bos.write("xierubneibuhuanchongqu".getBytes());

                                        //4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区的数据,刷新到文件中

                                                bos.flush();

                                         //5.释放资源(先调用flush方法刷新数据)

                                                bos.close();

2.缓冲输入流:1>概念:增强基本流(字节流,字符流)对象;

                                        BufferedInputStream是继承InputStream;

                                        BufferedInputStream(InputStream in);

                                        // 创建一个新的缓冲输入流,并保存参数;

                                        BufferedInputStream(InputStream in, int size);

                                        // 创建一个具有指定大小的缓冲区,并保存参数;

                          2>步骤://1.创建FileInputStream对象,构造方法中绑定要读取的数据源;

                                                 FileIntputStream fis = new FileInputStream("akdgn\\a.txt);

                                        //2.创建BufferedInputStream,构造方法中传递FileInputStream对象,提高效率

                                                 BufferedInputStream bis = new BufferedInputStream(fis);

                                        //3.使用BufferedInputStream对象中的方法read,把数据写入到内部缓冲区中

                                                使用FileInputStream读取;

                                         //4.释放资源(先调用flush方法刷新数据)

                                                bis.close();

3.Reader转换流:1>概念:读取字节,并使用指定的字符集将其解码为字符;

                                        InputStreamReader是继承Reader;

                                        InputStreamReader(InputStream in) ;

                                        // 创建一个使用默认字符集的字符流;

                                        InputStreamReader(InputStream in, String charsetName) ;

                                        // 创建一个指定字符集的字符流;

                           2>步骤://1.定义文件路径,文件为gbk编码;

                                                 String FileName = "E:\\file_gbk.txt";

                                        //2.创建流对象,默认UTF8编码;

                                                InputStreamReader isr = new InputStreamReader(new FileInputStream(FileName));

                                        //3.while ((read = isr.read()) != ‐1) {

                                                        System.out.print((char)read);

                                        //4. 使用指定编码字符流读取,正常解析 ;

                                                  while ((read = isr2.read()) != ‐1) {

                                                                System.out.print((char)read);

                                         //5.释放资源(先调用flush方法刷新数据)

                                                bos.close();

4.Writer转换流:1>概念:使用指定的字符集将字符编码为字节;

                                        OutputStreamWriter是继承Writer;

                                        OutputStreamWriter(OutputStream in) ;

                                        // 创建一个使用默认字符集的字符流;

                                        OutputStreamWriter(OutputStream in, String charsetName) ;

                                        // 创建一个指定字符集的字符流;

                           2>步骤://1.定义文件路径,文件为gbk编码;

                                                 String FileName = "E:\\file_gbk.txt";

                                        //2.创建流对象,默认UTF8编码;

                                                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(FileName));

                                       //3. 写出数据
                                                osw.write("你好"); // 保存为6个字节

                                      //4.释放资源(先调用flush方法刷新数据)

                                                osw.close();

5.序列化:1>ObjectOutputstream:<1>将Java对象的原始数据类型写出到文件,实现对象的持久存储;

                                                         <2>public ObjectOutputStream(OutputStream out);

                                                                 // 创建一个指定OutputStream的ObjectOutputStream;

                                                        <3>FileOutputStream fileOut = new FileOutputStream("employee.txt");

                                                              ObjectOutputStream out = new ObjectOutputStream(fileOut);

                                                        <4>使用序列化的条件:该类必须实现 java.io.Serializable 接口,Serializable 是一

个标记接口,不实现此接口的类将不会使任 何状态序列化或反序列化,会抛出 NotSerializableException 。

该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用

transient 关键字修饰;

                  2>ObjectInputstream:<1>将之前使用ObjectOutputStream序列化的原始数据恢复为对象;

                                                       <2>public final Object readObject () ;

                                                                // 读取一个对象

                                                       <3>e = (Employee) in.readObject();

                                                                in.close(); // 释放资源

                                                       <4>JVM可以反序列化对象,它必须是能够找到class文件的类;

                                                              如果找不到该类的class文件,则抛出一个 ClassNotFoundException 异常;

6.打印流:1>public PrintStream(String fileName) // 使用指定的文件名创建一个新的打印流;

                  2>PrintStream ps = new PrintStream("ps.txt");

                  3>改变打印流向:// 创建打印流,指定文件的名称;

                                                PrintStream ps = new PrintStream("ps.txt");

                                                // 设置系统的打印流流向,输出到ps.txt;

                                                 System.setOut(ps);

                                                // 调用系统的打印流,ps.txt中输出97

                                                 System.out.println(97);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值