当前位置:网站首页>InputStream/OutputStream(文件的输入输出)
InputStream/OutputStream(文件的输入输出)
2022-07-04 06:03:00 【俚语h。】
前面我们已经讲过了关于File类的一些常用的方法,对于文件系统,肯定少不了文件内容的输入与输出
一、InputStream
1.关于文件的读
分为两种方式:直接读取以及文本读取
不管是哪一种读取,都需要用到java.io.InputStream
表示输入流
InputStream本身是一个抽象类,我们在真正的使用中使用的是他的实现类 FileInputStream
对于文件的度,我么可以抽象成去水龙头上接水,我们需要准备一个容器,去接这些从水龙头流入的水
注意:在接水是由两种情况:1.当前有水 2.当前没水了,但是后面还会有水 3.当前没水,后面也不会有水。
在代码中,对于1.这种情况,直接返回一个大于零的数字,表示当前流出的水的数量 对于2 会返回0,表示当前没水了,但是后面还会有 对于
3返回一个 -1,表示当前没水,后满也不会再有水。
使用InputStream时,我们需要提前准备一个容器(通常为一个byte[])
1.直接读取
以二进制数据的方式读取,表现在代码中byte为单位
在使用读取时,我们使用InputStream实现类的read()方法
比如:在D:/IO目录下有一个world.txt文件,
我们要读取他的内容
a.一次读一个
b.一次读多个
这样的结果对于我们来说是没有意义的,因此我们需要的就是直接读取文本的内容
2、文本读取
所谓文本读取,就是我们拿到的内容就是文件原本的内容。
在读取时我们要注意文件原本的编码格式,以及后面我们在转义时的编码是否一致,如果不一致,有可能会出现乱码,文件内容无法识别等问题。
常用的编码规则有
在获取文件数据的基础上,我们可以利用Scanner类的方法将我们获取到的数据,根据编码规则进行转义,最终得到源文本的内容,但是前提是我们给定的编码规则要和源文本的编码规则一致
比如我们要读取D:/IO目录下的world.txt文件
我们可以看到他的编码规则是:UTF-8
接下来编写代码读取这个文件的内容
使用Scanner类的构造方法
我们可以看到,这样就将源文本的内容读到了
二、OutputStream
对于文件的写同样有两种情况,直接写入,按照原内容写入
在我们写入时,需要传入写入的文件路径,文件本身可以不存在(如果不存在就自动创建),但是他的祖先路径必须存在,在写入时,文件中原有的数据会被清除
1、直接写入
直接写入调用write()方法时,只能传入byte 或者 byte[]
我们直接往D:/IO/world.txt文件中写入“a”
此时world.txt已经存在
下面我们用直接写入方式编写代码
这样的输入肯定是非常不方便的
2、文本写入
下面有两种常用的写入方式
均向world.txt写入 “你好中国”

3、缓冲区
注意:在文件写入时,内存的读写速度远远高于硬盘的读写速度,因此,有一个缓冲区,数据先写入缓冲区,当(1、缓冲区满或达到一定的阈值 2、过了一段时间 3、进程主动刷盘),缓冲区的数据再写入硬盘,为防止缓冲区有遗留数据未刷入硬盘中,再写数据的最后,我们应手动调用flush()方法手动刷盘
边栏推荐
- [Chongqing Guangdong education] electronic circuit homework question bank of RTVU secondary school
- Configure cross compilation tool chain and environment variables
- 冲击继电器JC-7/11/DC110V
- Steady! Huawei micro certification Huawei cloud computing service practice is stable!
- How to solve the component conflicts caused by scrollbars in GridView
- Arc135 a (time complexity analysis)
- Risc-v-qemu-virt in FreeRTOS_ Lock mechanism analysis of GCC
- lightroom 导入图片灰色/黑色矩形 多显示器
- [untitled]
- Overview of relevant subclasses of beanfactorypostprocessor and beanpostprocessor
猜你喜欢

我的NVIDIA开发者之旅——优化显卡性能

【微服务】Nacos集群搭建以及加载文件配置

注释与注解

剑指 Offer II 038. 每日温度

一键过滤选择百度网盘文件

Review | categories and mechanisms of action of covid-19 neutralizing antibodies and small molecule drugs

High performance parallel programming and optimization | lesson 02 homework at home

Overview of relevant subclasses of beanfactorypostprocessor and beanpostprocessor

JS arguments parameter usage and explanation

接地继电器DD-1/60
随机推荐
19. Framebuffer application programming
Component、Container容器常用API详解:Frame、Panel、ScrollPane
AWT introduction
fastjson
How to configure static IP for Kali virtual machine
win10清除快速访问-不留下痕迹
740. Delete and get points
Detectron: train your own data set -- convert your own data format to coco format
如何判断数组中是否含有某个元素
Arc135 C (the proof is not very clear)
接地继电器DD-1/60
Tutle clock improved version
746. Climb stairs with minimum cost
剑指 Offer II 038. 每日温度
HMS v1.0 appointment.php editid参数 SQL注入漏洞(CVE-2022-25491)
High performance parallel programming and optimization | lesson 02 homework at home
Compound nonlinear feedback control (2)
2022.7.2-----leetcode.871
Practical gadget instructions
509. Fibonacci number, all paths of climbing stairs, minimum cost of climbing stairs