I/O

来源:互联网 发布:阿里云服务器空间满了 编辑:程序博客网 时间:2024/04/29 02:52

I/O  JVM和外部 交换数据

(1)流的三种分类

流的方向: 输入/输出  
数据单位: 字节/字符
流的功能: 节点/过滤

创建节点流  
封装过滤流
读/写数据
关闭流

(2)字节流
InputStream/OutputStream  字节流的父类   抽象类
   输出流:
   write(int a):写一个字节
   write(byte[] bs):将字节数组bs写入文件
   write(byte[] bs,int start,int length):将字节数组bs中的一段写入文件

   输入流:
   int read():从文件中读取一个字节 返回值:读到的字节数据 -1表示结束
   int read(byte[] bs):从文件中读满bs数组 返回值:读到的数据个数 -1表示结束
   int read(byte[] bs,int start,int len):从文件中读满数组的一段 -1表示结束

FileInputStream/FileOutputStream  文件流 读写文件  节点流
DataInputStream/DataOutputStream  读写8种基本类型和String
BufferedInputStream/BufferedOutputStream 缓冲   flush():清空缓冲区
                    PrintStream  缓冲,写8种基本类型和String
ObjectInputStream/ObjectOutputStream  缓冲 8种基本类型和String 对象!

(3)对象序列化: 通过流传输对象
只有实现了Serializable接口的对象,才能序列化
transient 修饰符 修饰属性  临时属性,不参与序列化

(4)字符流   处理文本  String
字符编码:   字符  <----> int
当编码方式和解码方式不统一时,可能出现乱码

ASCII            美国  1char --> 1byte
ISO-8859-1       西欧  1char --> 1byte
GB2312     
GBK              简体中文       1char --> 2byte
Big5             繁体中文

Unicode
UTF-8            全球统一     变长  1char-->1,2,3
UTF-16                        定长  1char-->2byte

字符流
Reader/Writer    字符流的父类  抽象类
FileReader/FileWriter  文件字符流  节点流
InputStreamReader/OutputStreamWriter  字节流-->字符流 桥转换 指定编解码方式
BufferedReader/BufferedWriter  缓冲
               PrintWriter     

File 代表了磁盘上的文件或目录
createNewFile() 创建新文件
mkdir() 创建新目录
delete() 删除文件或空目录
exists() 判断文件或目录是否存在
getAbsolutePath()  获得绝对路径
isFile()/isDirectory()  判断File对象所代表的是不是文件/目录
listFiles() 针对目录,获得目录中的内容 File[]

(5)不关流的时候,可能造成内存泄露。但这个泄露可能是系统资源没被释放。
例如:用java生成一个windows窗口,实际上这时在内存中有两个对象,java的对象被释放掉了,但内存中的windows资源并没有被释放掉。造成内存泄露。
关流的时候,是将对应的系统的资源关掉。

0 0
原创粉丝点击