当前位置:网站首页>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()方法手动刷盘
边栏推荐
- 检漏继电器JY82-2P
- Design and implementation of tcp/ip series overview
- Basic concept of bus
- left_ and_ right_ Net interpretable design
- Detectron: train your own data set -- convert your own data format to coco format
- js获取对象中嵌套的属性值
- 2022.7.3-----leetcode. five hundred and fifty-six
- 每周小结(*63):关于正能量
- 724. Find the central subscript of the array
- Practical gadget instructions
猜你喜欢
Learning multi-level structural information for small organ segmentation
我的NVIDIA开发者之旅——优化显卡性能
js如何将秒转换成时分秒显示
Accidentally deleted the data file of Clickhouse, can it be restored?
Upper computer software development - log information is stored in the database based on log4net
Tf/pytorch/cafe-cv/nlp/ audio - practical demonstration of full ecosystem CPU deployment - Intel openvino tool suite course summary (Part 2)
JS how to convert seconds into hours, minutes and seconds display
Input displays the currently selected picture
Uninstall Google drive hard drive - you must exit the program to uninstall
JS扁平化数形结构的数组
随机推荐
Nexus 6p downgraded from 8.0 to 6.0+root
Descriptive analysis of data distribution characteristics (data exploration)
input显示当前选择的图片
Layoutmanager layout manager: flowlayout, borderlayout, GridLayout, gridbaglayout, CardLayout, BoxLayout
JS execution mechanism
fastjson
Halcon image calibration enables subsequent image processing to become the same as the template image
Programmers don't talk about morality, and use multithreading for Heisi's girlfriend
Configure cross compilation tool chain and environment variables
如何避免 JVM 内存泄漏?
Win10 clear quick access - leave no trace
Risc-v-qemu-virt in FreeRTOS_ Lock mechanism analysis of GCC
LayoutManager布局管理器:FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout、BoxLayout
ABAP:OOALV实现增删改查功能
The difference between PX EM rem
js如何将秒转换成时分秒显示
Notes and notes
Design and implementation of tcp/ip series overview
[untitled]
C语言中的函数(详解)