【文件输入输出流】Inputstream和Outputstream

发布于:2022-12-13 ⋅ 阅读:(449) ⋅ 点赞:(0)

在写Java程序中,在IDEA中可以对文件内部的信息进行操作,以下由Inputstream和Outputstream的知识总结。

File:

在进行文件输入输出流之前,要先打开一个文件,通过File的类来进行初始化一个文件对象,并传入一个字符串,该字符串写的是文件的路径,可以是相对路径也可以是绝对路径。

 然后可以用file对象来进行一系列获取文件的操作:

 Inputstream:

Inputstream本身是一个抽象类,没有具体的方法,但是可以实例化FileInputstream来继承它,然后就可以使用FileInpustream里面的方法。

 然后在实例化FileInputstream里面放入刚刚打开的文件:

 这样就算打开了一个文件的输出流

具体操作有read方法:

read方法重载了几种类型:

1:不传入参数,直接返回文档中一个字节的数据,用int接收。

2:传入参数byte[]数组,返回读出的字节长度,用int接收,若读取完了返回-1;

3:传入参数byte[]数组,以及需要读取的字节长度,数组的off到len用来存放读取的字节,最多读取len-off个字节,返回具体读出来的字节长度。

当文档中有字符串“hello world!”:

进行读取操作:

 

 

 Outputstream

跟Inputstream类似,Outputstream也是一个抽象类,通过FileOutputstream来进行写入文档操作。

 FileOutstream里面有方法write来进行文档的写入操作:

write也是被重载了几种类型:

1:直接写入一个字符。

2:传入参数byte[]数组,将byte[]数组里面的字节信息写入到文档。

3:传入参数byte[]数组,以及写入的开头和结尾,off到len是指byte[]下标,写入长度为len-off个字节的长度。

 

 注意:

1)要区分二进制文件和文本文件的区别,二进制文件一般用数据流进行写入和读取,针对文本文件一般使用字符流进行写入和读取,常见使用字符流的操作有Scanner和PrintWriter等等。

2)还有编码的问题,事实上所有的文件都可以用字节流进行读取,但是由于编码的不同,导致一些字符所占用的字节数不同,在进行字节流读取文本文件的时候指是一个字节一个字节进行读取,当遇到比如说utf-8编码的时候,一个中文字符是用三个字节存储的,但是字节流直接一个字节一个字节进行读取,会把三个字节的中文字符拆开,导致写入或者读取的时候发生错误,导致读取错误。


网站公告

今日签到

点亮在社区的每一天
去签到