IO流

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了IO流脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

I/O流

什么是流?

概念:内存与存储设备之间传输数据的通道

水借助管道传输;数据借助流传输

流的分类

方向分:

  • 输入流:将<存储设备>中的内容读到<存储设备>中
  • 输出流:将<内存>中的内容写入到<存储设备>中

按单位分:

  • 字节流:以字节为单位,可以读写所有数据
  • 字符流:以字符为单位,只能读写文本数据

按功能分:

  • 节点流:具有实际传输数据的读写功能
  • 过滤流:在节点流之上增强功能

文件字节流

  • FileinputStream

    public int read(byte[] b )
    从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
    
  • FileOutputStream:

    public void wrITe(byte[] b)
    一次写入多个字节,将b数组中所有字节,写入输出流。
    

字节缓冲流

  • BufferedInputStream
  • BufferedOutputStream
1、提高IO效率,减少访问磁盘的次数
2、数据存储在缓冲区中,flush是将缓冲区的内容写入文件中,也可以直接close

对象流

1、增强了缓冲区的功能
2、增强了读写8种基本数据类型和字符串功能
3、增强了读写对象得到功能:readObject() 				从流中读取一个对象
					   writeObject(Object obj)	 向流中写入一个对象
使用流传输对象的过程称为序列化、反序列化。

注意事项

1、序列化类必须要实现Serializable接口

2、一个对象只能读一次,重复读一个对象会抛出EOFException异常

3、序列化类中对象属性也要实现Serializable接口

4、序列化版本号ID,保证序列化的类和反序列化的类是同一个类。

5、使用transient<瞬间的>修饰属性,这个属性不会被序列化

6、静态属性也不能被序列化

7、序列化多个对象可以借助集合实现

字符编码

  • ISO-8859-1 收录了除ASCLL外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字
  • UTF-8: 针对Unicode码表的可变长度字符编码
  • GB2312 简体中文
  • GBK 简体中文,扩充
  • Big5 台湾,繁体中文

编码方式和解码方式不同会出现乱码

字节流可以复制任何文件,但是字符流只能复制文本文件,不能复制图片和二进制文件。

转化流

桥转换流:InputStreamReader / OutputStreamWrite

  • 可将字节流转换为字符流
  • 可设置字符的编码方式
InputStreamReader是字节流通向字符流的桥梁
OutputStreamReader是字符流通向字节流的桥梁

File类

  1. 概念:代表物理盘符中的一个文件或者文件夹
  2. 方法:
1、CreatNewFile()	//创建一个新文件夹
2、mkdir()			//创建一个新目录
3、delete()			//删除文件或空目录
4、exists()			//判断file对象所代表的对象是否存在
5、getAbsolutePath()	//获取文件的绝对路径
6、getName()			//取的名字
7、getParent()		//获取文件所在的目录
8、isDirectory()		//是否是目录
9、isFile()			//是否是文件
10、lenght()			//获得文件的长度
11、listFiles()		//列出目录中的所有内容
12、renameTo()		//修改文件名为
文件夹删除操作只能删除最低级的空目录

脚本宝典总结

以上是脚本宝典为你收集整理的IO流全部内容,希望文章能够帮你解决IO流所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。