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