欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 综合教程 >内容正文

综合教程

字节流

发布时间:2024/8/26 综合教程 36 生活家
生活随笔 收集整理的这篇文章主要介绍了 字节流 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

IO(Input Output)流

IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式

Java用于操作流的类都在IO包中

流按流向分为两种:输入流,输出流。

流按操作类型分为两种:字节流与字符流。

字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便。

IO流常用父类

字节流的抽象父类

InputStream ,OutputStream

字符流的抽象父类:

Reader , Writer

读取文件

创建FileInputStream对象, 指定一个文件. 文件必须存在, 不存在则会抛出FileNotFoundException

使用read()方法可以从文件中读取一个字节. 如果读取到文件末尾会读到-1

读取结束后需要释放资源, 调用close()方法关闭输入流

写出文件

创建FileOutputStream对象, 指定一个文件. 文件不存在会创建新文件, 存在则清空原内容. 如果需要追加, 在构造函数中传入true.

使用write()方法可以向文件写出一个字节.

写出结束后同样需要调用close()

拷贝文件

可以从文件中逐个字节读取, 逐个字节写出, 但这样做效率非常低

我们可以定义一个数组作为缓冲区, 一次读取多个字节装入数组, 然后再一次性把数组中的字节写出

使用FileInputStream和FileOutputStream, 逐个字节拷贝

使用FileInputStream和FileOutputStream, 定义一个大数组(length等于文件大小), 一次性拷贝

使用FileInputStream和FileOutputStream, 定义一个小数组(例如1024), 多次拷贝

使用BufferedInputStream和BufferedOutputStream内置的缓冲区, 逐个字节拷贝

常用方法
  InputStream:
   read()               读取一个字节
   read(byte[])         读取若干(数组长度)字节
   available()          获取可读的字节数
   close()              关闭流, 释放资源
  OutputStream:
   write(int)            写出一个字节
   write(byte[])         写出数组中的所有字节
   write(byte[],start,len);
   close()               关闭流, 释放资源                    

BufferedInputStream
BufferedInputStream内置了一个缓冲区(数组)
从BufferedInputStream中读取一个字节时
BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个

BufferedOutputStream
BufferedOutputStream也内置了一个缓冲区(数组)
程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里

总结:

在字节流中什么文件都可以读取

所有的文件都是通过0101的数据进行转换而得到的

缓冲区是为了提高字节传输的效率

总结

以上是生活随笔为你收集整理的字节流的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。