java I/O (一)
java 的I/O类基本上可以分为6大类:二进制的输入,二进制的输出,文本的输入,文本的输出,FILTER类和其他对文件操作的工具类。
Java的I/O类主要在java.io的包里,其中两个主要的流为输入/输出类:java.io.InputStream和java.io.OutputStream.在System这个类中有两个静态的属性in和out,分别对应与键盘的输入和输出到屏幕。
package com.zengbo.iodemo; import java.io.*; public class IODemo1 { public static void main(String[] args){ InputStream in = System.in; OutputStream out = System.out; try{ int a = 0; while(a != -1){ a = in.read(); //System.out.println(a); out.write(a); } } catch(IOException e){ } } }
InputStream 和 OutputStream 是两个抽象类,这里的两个对象是实现了InputStream和OutputStream抽象类的抽象方法的子类的对象。
InputStream 和 OutputStream 类只提供对数据最小单元“byte”的操作函数。这里在read和write操作是,返回的值自动转换为int整形类型。一个整形为4个字节,在读键盘输入时把一个字节的“byte”数据加上3个字节的0,在写文件时,将字节的高位3个字节的数据去掉,只是将最低位的一个字节写到屏幕上,这里高位3个字节为0。所以在执行里面注释的那行代码时会输出asc||码值(因为read函数返回的是int类型,所以用System.out.println(a)会输出asc||码,而out.write(a)则是返回原数据)。
InputStream的主要方法:
int read()
int read(byte chuf[])
int read (byte chuf[],int offset,int length)
第一个返回读取字符的asc||码的十进制表示,后两个函数返回值表示实际读取的长度。
int skip(int over)
skip方法用于跳过数据流中的一些数据,不处理,直接处理后面的数据,skip()的返回值是实际跳过的字节数,参数是想要跳过的字节数。
int available()
获取数据流中的数据量,InputStream的available()方法返回的值是0,其子类可以覆盖该方法。
I/O就是数据流从一个地方流向另一个地方,比如System.in就是从屏幕的数据流向程序,而System.out就是从程序的数据流向屏幕;FileInputStream类就是用来把数据从文件流向程序,FileOutputStream类就是把数据从程序流向文件;PipedInputStream类把数据从管道流向程序,PipeOutputStream类把数据从程序流向管道。