首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Java] JAVA IO操作

[Java] JAVA IO操作

作者头像
架构探险之道
发布2020-02-25 18:02:12
5700
发布2020-02-25 18:02:12
举报
文章被收录于专栏:架构探险之道架构探险之道

[Java] JAVA IO操作

简介

一个优秀的程序必然离不开IO操作,不论是读写网络数据还是本地文件,都必须有扎实的IO操作技巧。

核心内容: 1.字节流、字符流的区别。 2.缓冲流的使用。 3.随机文件读写。


手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发布地址。

平台

地址

CSDN

https://blog.csdn.net/sinat_28690417

简书

https://www.jianshu.com/u/3032cc862300

个人博客

https://zacsnz.github.io/NoteBooks/


正文

Java IO操作

IO 简介

  • 含义

IO也写作“I/O”,可理解为In和Out,即输入与输出。 所以IO体系的基本功能就是:读和写。

  • IO流:

作用:读写设备上的数据,硬盘文件、内存、键盘、网络...

  • 分类

根据数据的走向,可分为:输入流、输出流 根据处理的数据类型,可分为:字节流、字符流

  • 区别

字节流: 可以处理所有类型的数据,如MP3、图片、文字、视频等。在读取时,读到一个字节就返回一字节。

字符流:仅能处理纯文本数据,如txt文本等。在读取时,读到一个或多个字节,先查找指定的编码表,然后将查到的字符返回。

在Java中对应的类都是以「Reader」、[Writer]结尾

IO 中字符、字节和编码的区别和联系

  • 字节(Byte)

字节是通过网络传输信息或在硬盘或内存中存储信息的单位,是算机信息技术用于计量存诸容量和传输容量的一种计量单位。 1个字节等于8位二进制, 即一个8位的二进制数,是一个很具体的存储空间。 如0x01, 0x45, OxFA,…

  • 字符(Char)

字符是人们使用的记号,抽象意义上的一个符号。 如]a$1等等。

  • 字符集(Charset) 字符集也称作编码,各个国家和地区所制定的不同ANSI编码标准中,都只规定了各自语言所需"字符"。 比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。这些ANSI编码标准所规定的内容包含两层含义: 各个国家和地区在制定编码标准的时候, “字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集" ,比如: GB2312, GBK, JIS等,除了有字符的集合这层含义外,同时也包含了编码的含义。
    1. 使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。
    2. 规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。
  • ANSI 字符串在内存中,如果“字符”是以ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为ANSI字符串或者多字节字符串。不同ANSI编码所规定的标准是不相同的,因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种编码规则,才能够知道它包含了哪些"字符”
  • UNICODE 字符串在内存中,如果字符是以在UNICODE中的序号存在的,那么我们称这种字符串为UNICODE字符串或者宽字节字符串。对于UNICODE字符串来说,不管在什么环境下,它所代表的字符内容总是不变的。用来给UNICODE字符集编码的标准有很多种, 比如: UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig等。

Tips:

对于任何数据,都可以通过字节流来操作。 对于文本数据,如果利用字符流操作,需要指定相应的编码规则。

使用字节流读写数据

字节流读取数据

字节流写数据

利用中间数据时间字节流数据的拷贝

使用带缓冲的字节流读写数据

读取数据

写入数据 & 拷贝数据

修改缓冲区大小

Tips:

缓冲区过大和过小都不好,需要根据文件大小动态调整。

使用字符流读写数据

读取数据

写入数据 & 拷贝数据(文本文件)

FileReader与FileWriter

读写文件

RandomAccessFile随机文件读写

  • 构造随机读写任务执行类
  • 多线程随机读写

Tips:

每个线程任务根据区块下标进行偏移写入。

使用Apache IO库操作IO与文件

功能十分强大,具体参考Apache IO 官方API。

JDK UML

REFERENCES

  • 极客视频:Java中的IO操作
  • JDK8 官方API
  • Apache Commons IO API

链接文本

 - JDK8 官方API
 https://docs.oracle.com/javase/8/docs/api/

- Apache Commons IO API
https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html

本文素材来源于https://www.jikexueyuan.com/course/215_9.html?ss=1


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构探险之道 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [Java] JAVA IO操作
  • Java IO操作
    • IO 简介
      • IO 中字符、字节和编码的区别和联系
        • 使用字节流读写数据
          • 使用带缓冲的字节流读写数据
            • 使用字符流读写数据
              • FileReader与FileWriter
                • RandomAccessFile随机文件读写
                  • 使用Apache IO库操作IO与文件
                    • JDK UML
                      • REFERENCES
                      相关产品与服务
                      区块链
                      云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档