总结 File 类的用法和 InputStream, OutputStream 的用法

在上一个博客说了File的字节流是以两种方法来实现的,这篇博客就说一下这两种方法的用法,

一,FileInputStream

 先说一下InputStream里面包含的方法

但要注意这个InputSteam不能实例化,我们现在只从文件关注,所以只看FileInputStream 

1.概述

如何使用这两个方法呢:

1.填写字符串表示的文件路径(绝对/相对路径均可)

2.填写File对象 

InputStream inputStream = new FileInputStream("./hello");

 这先是打开文件,如果没有出现异常打开成功,接下来就是读取文件内容

通过read方法来读取文件,总共有三种方法:

版本一:无参的

一次读取一个字节,通过返回值来表示了,但要注意,这里的返回值是int

此处返回int也是有原因的:

1.因为读取文件结尾是-1,所以要有额外的地方来表示这个-1。

2.确保读到的字节都是正数,byte字节有符号,通过int就把它按照无符号来处理了。

版本二:有一个参数,byte[]

这个版本用的比较少,代码如下:

byte[] bytes = new byte[1024];
inputStream.read();

要先规定好空的数组,然后把方法执行完毕之后,填写到byte数组中去。一次取多少,是按照你数组的长度来的,read会尽量把数组填满,最后不够也就能填多少填多少。

版本三:指定填充多大

也就是版本二的进阶版,可以指定填充多大的,从offset下标开始,最多填充len这么长。

也就是在网络中比如前面的报头需要填充一部分,后面的载荷有需要填充另一部分,所以也是很实用的。

2.无参vs有一个参数的

那写完了之后,无参的传输快还是有参数的传输快呢,第一个read()频次高,但一次只能读取一个字节,而read(byte[])频次一般,但一次读取的内容还是非常丰富的,而且调用read都是需要系统api访问硬盘的,访问硬盘肯定会导致效率变慢,所以肯定是带有一个参数的更快一点。

3.close

关闭文件也是一个很重要的操作,如果一直打开文件还不关闭文件,在后面堆积起来,就是一个定时炸弹。

在打开文件的时候,会操作系统内核,给文件描述符添加一个元素,当执行close的时候,就会释放这个文件描述符所对应的元素,如果一直没有关闭,导致占满了,就会导致文件打不开的情况发生。

二,Outputstream 

先说一下它的方法:

这里面和上面对应,也是三种方法,这里在概述一下

1.概述

版本一,一次write一个字节,参数是int类型

版本二,一次write若干个字节,会把参数数组中的所有字节写入文件中。

版本三,一次write若干个字节,把数组offset下标开始,连续写len个字节。 

 这里要注意,OutputStream直接默认打开是会清空文件内容的,代码如下:

public static void main(String[] args) throws IOException {
       try (OutputStream outputStream = new FileOutputStream("./hello.txt")){

       }
    }

这样打开之后,就会清空文件夹,要不想清空,就要以追加写的方式打开,也就是增加一句true。

public static void main(String[] args) throws IOException {
       try (OutputStream outputStream = new FileOutputStream("./hello.txt",true)){

       }
    }

2.读取

这边的read分了四个,我们只需要看前两个就可以了,第一个和上面一样,一次读取一个字节。

第二个是有一个参数char[] 这种的。

3.write

第一个是往里写一个字节,第二个往里写一个字符串,第三个往里写一个字符数组,第四个和第五个往里写的有限制一次写多少。

 重点关注第二个就行了,简单。

代码如下:

    public static void main(String[] args) throws IOException {
       try (Writer writer = new FileWriter("./hello.txt",true)){
           writer.write("你好世界");
       }
    }

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值