Java 流

来源:互联网 发布:荆州网络电视垄上行 编辑:程序博客网 时间:2024/06/05 23:03

java 流的本质是数据传送的管道,java 中利用流实现外部数据的交互

文本文件

1。以字符形式存储的文件
2. 文本文件可见( 存储起,键盘输入的都是文本文件)
3。文本文件需要转化, 也就是说从键盘中输入的字符星数据,药转化为二进制数据才能存储到内存里面。 而内存的二进制数据也要转化到字符星数据才能在屏幕显示

二进制文件

1.以内存的方式存储
2.不可见传输效率高

基本字节流

    1.文件字节流    2.网络字节流    3.标准字节流

InputStream 抽象类

    int read()l 从输入流中读取一个字节,形成 0-255之间的整形返回

随机流

也就是FIle 流

文件字节流

为了防止意外,输出流应该刷空(flash())

套接流 ##

    data流:    嵌入流,放入网络流的实话,可以一次处理一个字符串,并且恶意对字符进行编码

对象流

持续性:  把对象文件状态进行传送,接收者可以通过接收的状态从而创建对象序列化:对象通过写出描述自己转台的数字莱记录表自己的过程叫串行化(序列化)反序列化: 生成对象 (反序列化)1.实现串行化协议()implemenets Serializable 2 。存放的文件只能是二进制文件 new FileOutputStream  ("as.data");3. 嵌入 对象输出流  out = new ObjectOutputStream (new FileOutputStream  ("as.data"));4. 写入 : out.write(对象的引用实例化)5.反序列化:Student t = (Student)in.readObject();

反射创建对象


管道流

    1. 输入流和输出流首尾相接    2

. 创建:
1.在构造方法中连接: PipedInputStream pis = new PipedInputStream(); //管道输入流对象
PipedOutputStream pos = new PipedOutputStream(pis); //管道输出流 。参数是输入流对象,结果便是首位相连

顺序输入流

当输入流太多的时候,一个个读取太麻烦,所以出现了SequenceInputStream 可以几个输入连接起来,像是一个比较长的流而已 ,让代码更简洁:
FileInputStream f1,f2;String s;f1 = new FileInputStream(“file1.txt”);f2 = new FileInputStream(“file2.txt”);SequenceInputStream fs = new SequenceInputStream(f1, f2);DataInputStream ds = new DataInputStream(fs);while( (s = ds.readLine()) != null )   System.out.println(s);

以上都是字节流




字符流

因为一个个字节读取效率太满。所以出来了字符流     字符流的使用需要考虑编码 

如果读取的字符流不是来自本地时(比如网上某处与本地编码方式不同的机器),那么在构造字符输入流时就不能简单地使用缺省编码规范,而应该指定一种统一的编码规范“ISO 8859_1(国际)”,这是一种映射到ASCII码的编码方式,能够在不同平台之间正确转换字符。UTF-8 (国内)
InputStreamReader ir = new InputStreamReader( is, “8859_1” ); //国际

字符流不能处理二进制文件,只能处理文本文件

InputStreamReader和OutputStreamWriter