07 JAVA IO流
来源:互联网 发布:mac邮件设置qq邮箱 编辑:程序博客网 时间:2024/05/17 09:16
还是我大中国的民谣好听~啦啦啦~
10.......
文件,网络等《-------------》程序
各种各样的流类用来获取不同种类的数据(自我提醒:文章中的缓存就是缓冲区,*_* ,懒得改了,我的blog我做主)
- java.io包里定义了多种流类型:
- 输入流,输出流(站在程序的角度)
- 字节流(一个字节),字符流(两个字节,JAVA采用UTF-16)
- 节点流(数据源《-》程序),处理流(嵌套流,处理流连接在已存在的流上面,通过对数据处理为程序提供更强大的读写功能)
java.io所有类型都分别继承4个抽象流类型(4种管道):
构造流的时候,可以指定编码集合,比如“ISO8859-1”(西欧语言,Latine-1);输出流指定的文件不存在的时候,会自动创建一个,但不能自动创建目录哦~
- InputStream,向程序输入数据(其实是某块内存),数据单位为一个字节
- int read() 读取一个字节(返回整数,范围为0~255,如果-1则表示输入流已经到了末尾)
- int read(byte[] buffer) 读取一组字节存储到一个数组buffer中,返回实际读取到的字节数,如果读取前已经到了输入流的末尾返回-1
- int read(byte[] buffer, int offset, int length) 第一个字节被存储在buffer[offset]中
- int close() 关闭流释放内存资源
- long skip(long n) 跳过n个字节不读(记住long是8个字节哦),返回实际跳过的字节数
- OutputStream,用于程序输出数据,单位同样是字节
- void write(byte[] b) 将一个字节类型的数组写入输出流
- void write(byte[] b, int offset, int length)
- void close()
- void flush() 一般buffer被填满之后才被进行处理,close不管缓存是否已经都写入就直接关闭管道,太暴力了,我们一般我们会在write之后或者close之前加上flush方法
- Reader,向程序中输入字符(字符是两个字节的,有时我们需要以字符为单位传送,比如中文一般都是两个字节来表示,如果只传送了一个字节,那么,呃呃呃,半个字?)
- int read(char[] cbuf) 去一些列字符存储到一个数组buffer中,并且返回实际读取的字符数,如果读取前已经到达了输入流的末尾则返回-1
- 其他方法与InputStream类似
- Writer,输出数据,以字符为单位
- void write(char c) 写入一个字符
- void write(char[] cbuf) 写入一个字符数组
- void write(String string) 写入一个字符串(String->char[] toCharArray)
- 节点流(File, Memory ByteArray, Memory String, Pipe)
- 处理流,提供对数据更好的读写方式(字节-》字符,数据/对象的读写,缓存流[newLine, readLine, mark, reset],输出流)
- 缓存流,套接到其他的输入、输出流之上,对读写的数据提供了缓存功能,提高了读写的效率,同时增加了一些新的方法
1. mark(int readlimit) 为某个位置做标记
2. reset() 回到刚才标记的位置
3. readLine()读取一行字符串,以\r或\n分隔
4. newLine() 写入一个行分隔符
5. flush() 写出的数据会先在内存中缓存,使用flush方法将会使内存中的对应数据立刻写出
- 转换流(字节-》字符)
- 数据流,提供了存取JAVA原始基本数据的方法
- Print流,它只有输出流,PrintWriter和PrintStream分别针对字符和字节,连个类不抛出异常(被定义抛出异常的方法都需要捕获想要的异常),并且提供了重载的print和println,用户检测错误状态获取错误信息,What's more,他们都有自动flush功能~
- Object流,直接将Object写入或读出硬盘,实现持久化(将整个对象写进去,而不是一小块一小块属性的存储)
将Object->字节流
1. Serializable接口,没有重写,标记接口,因为没有定义方法,只是为了告诉别人说这个类是可以序列化的
2. transient,透明,就是序列化的时候不予考虑,不写入硬盘,此时会存储初始默认的值,比如0,null等
3. externalizable接口,我们可以通过实现它来自己控制对象序列化的实现
Something else:
StringBuilder:可变字符序列,与StringBuffer没什么区别
StringBuilderStringBuffer
线程不安全,效率高线程安全,效率低
Reference:
1、马士兵JAVA基础视频
0 0
- 07 JAVA IO流
- 07 JAVA IO流 练习
- JAVA【IO一】IO流
- Java-IO-java的IO流
- java学习笔记07—IO流
- Java中IO流学习07
- Java基础07IO
- java IO 流
- JAVA之IO流
- java IO(字符流)
- java的io流
- JAVA之IO流(
- JAVA 基础IO流
- JAVA 中的IO流
- Java IO 流学习
- JAVA 中的IO流
- Java IO流操作方法。。
- java io流总结
- uva10305(拓扑
- [LeetCode]240.Search a 2D Matrix II
- Problem F
- Redis 数据持久化
- 高效Linux之Terminal下实用快捷键
- 07 JAVA IO流
- Lucene八(搜索分页)
- 数据结构 线性表的顺序存储
- 数据库设计--实体关系图(ERD)
- ExpandableListView组件学习笔记
- Android开发----音乐播放器(界面设计)
- 杭电4883 TIANKENG’s restaurant(小板凳的问题)
- win7旗舰版升级win10
- HDU 4987/BC 7C Little Pony and Dice