前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Java IO

作者头像
用户10358987
发布2024-04-23 19:47:39
590
发布2024-04-23 19:47:39
举报
文章被收录于专栏:javajava

1 IO流的分类

1.1 按数据流的方向:输入流、输出流

此输入、输出是相对于我们写的代码程序而言。

  • 输入流:从别的地方(本地文件,网络上的资源等)获取资源输入到我们的程序中。
  • 输出流:从我们的程序中输出到别的地方(本地文件), 将一个字符串保存到本地文件中,就需要使用输出流。
1.2 按处理数据单位不同:字节流、字符流

1字符=2字节、1字节(byte)=8位(bit)、一个汉字占两个字节长度。

  • 字节流:每次读取(写出)一个字节,当传输的资源文件有中文时,就会出现乱码。
  • 字符流:每次读取(写出)两个字节,有中文时使用该流就可以正确传输显示中文。

字节流和字符流的区别:

字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。简而言之,字节是个计算机看的,字符才是给人看的。

能使用字节流不一定能使用字符流,能使用字符流一定能使用字节流。

1.3 按功能不同:节点流、处理流
  • 节点流:以从或向一个特定的地方(节点)读写数据,如FileInputStream。
  • 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数,一个流对象经过其他流的多次包装,

2 四大抽象类

IO所谓的四大抽象类就是:InputStream、OutputStream、Reader、Writer。

2.1 InputStream

字节输入流的父类,数据单位为字节。

节点流

  • FileInputStream:文件字节输入流(操作对象为File文件对象)
  • ByteArrayInputStream:字节数组输入流(操作对象为字节数组)

处理流

  • FilterInputStream:过滤字节输入流(简单的实现了InputSteam类,一般用它的子类BufferedInputSteam、DataInputStream等)
  • BufferedInputStream:字节输入缓冲流
  • DataInputStream:基本数据类型输入处理流
  • ObjectInputStream:引用数据类型输入处理流(对象反序列化)

常用方法

  • int read(); 从输入流中读取下一个字节
  • void close(); 关闭流
2.2 OutputStream

字节输出流的父类,数据单位为字节。

字节流

  • FileOutputStream:文件字节输出流(操作对象为File文件对象)
  • ByteArrayOutputStream:字节数组输出流(操作对象为字节数组)

处理流

  • FilterOutputStream:过滤字节输出流(简单的实现了OutputStream类,一般用它的子类BufferedOutputSteam、DataOutputStream等)
  • BufferedOutputStream:字节输出缓冲流
  • DataOutputStream:基本数据类型输出处理流
  • ObjectOutputStream:引用数据类型输出处理流(对象序列化)

常用方法

  • void write(int b); 将一个integer数组长度写入此流
  • void flush(); 刷新此流
  • void close(); 关闭该流并释放与之相关的所有资源
2.3 Reader

字符输入流的父类,数据单位为字符。

节点流

  • FileReader:文件字符输入流(操作对象为File文件对象)
  • CharArrayReader:字符数组输入流(操作对象为字符数组)

处理流

  • BufferedReader:字符输入缓冲流
  • InputStreamReader:字符输入格式处理流(可以设置字符编码等)

常用方法

  • int read(); 读取单个字符
  • int read(char[] cbuf, int off , int len ); 将字符读入数组的某一部分
  • void close(); 关闭该流并释放与之相关的所有资源
2.4 Writer

字符输出流的父类,数据单位为字符。

节点流

  • FileWriter:文件字符输出流(操作对象为File文件对象)
  • CharArrayWriter:字符数组输出流(操作对象为字符数组)

处理流

  • BufferedWriter:字符输出缓冲流
  • OutputStreamWriter:字符输出格式处理流(可以设置字符编码等)

常用方法

  • void writer(); 创建一个字符流
  • void flush(); 刷新此流
  • void close(); 关闭该流并释放与之相关的所有资源
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 IO流的分类
    • 1.1 按数据流的方向:输入流、输出流
      • 1.2 按处理数据单位不同:字节流、字符流
        • 1.3 按功能不同:节点流、处理流
        • 2 四大抽象类
          • 2.1 InputStream
            • 2.2 OutputStream
              • 2.3 Reader
                • 2.4 Writer
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档