IO流(输入流与输出流)

IO流的分类可以分为以下三种:
第一种:输入流和输出流
按照流的流向来分,可以分为输入流和输出流。输入,输出都是从程序运行所在内存的角度来划分的。
输入流:只能从中读取数据,而不能向其写入数据,由InputStream和Reader作为基类。
输出流:只能向其写入数据,而不能从中读取数据。由OutputStream和Writer作为基类

第二种:字节流和字符流
字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同。
字节流操作的数据单元是8位字节,由InputStream和OutputStream作为基类。
字符流操作的数据单元是16为的字符,由Reader和Writer作为基类


第三种:节点流和处理流
按照流的角色来分,可以分为节点流和处理流。
节点流:可以从向一个特定的IO设备(如磁盘、网络)读/写数据的流。也被称为低级流。
处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。也称为高级流

1、流:(从流向来说分为两种)

java.io.InputStream 输入流 :从外部存储空间数据读到内存中

java.io.OutputSteam 输出流:从内存中将输入写到外部存储空间 (永久保存,不会自动消失)

2、流:(字节流、转换流、字符流)

字节流:用来操作字节文件,但也可以操作字符文件

               所有字节输入流的超类是:InputStream(抽象类)

                FileInputStream、BufferedInputStream、DataInputStream、ObjectInputStream

                所有字节输出流的超类是:OutputStream(抽象类)

                FileOutputStream、BufferedOutputstrea、DataOutputStream、 ObjectOutputStream

字符流:用来操作字符文件

                Reader : BufferedReader 、 FileReader

                Writer : BufferedWriter 、 FileWriter

转换流:

                InputStreamReader

                OutputStreamWriter

3、序列化

        参与序列化与反序列化的类必须实现java.io.Serializable 接口,并推荐生成序列化ID

        静态属性不参与序列化与反序列化操作

        父类可以序列化,那么子类必然可以序列化,无论子类是否实现java.io.Serializable 接口

        类序列化时,属性引用的对象也会被序列化

        不参与序列化操作的属性需要标记为transient

装饰者模式:
import java.io.*;
import java.util.Scanner;

public class IOWriterReaderTest {

    //装饰者模式
    public static void main(String[] args) throws IOException {

        Scanner input = new Scanner(new File("E:/test/1.txt"));

        String name = input.next();
        System.out.println(name);

        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:/test/3.txt"));
        osw.write("Hello");
        osw.flush();
        osw.close();

        InputStreamReader isr = new InputStreamReader(new FileInputStream("E:/test/3.txt"));
        char[] buffer = new char[512];
        int len = -1;
        StringBuffer sb = new StringBuffer();
        while((len = isr.read(buffer)) != -1){
            String str = new String(buffer,0,len);
            sb.append(str);
        }

        System.out.println(sb);  //Hello
        isr.close();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单眼皮女孩i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值