来来来,继续~开始java IO系统了。我们的程序从输入流重读取数据,向输出流中写入数据。
如果数据流中的最小数据单位是字节,那么这种流叫做字节流,java.io.InputStream叫做字节输入流,java.io.OutputStream叫做字节输出流;如果数据流中的最小数据单位是字符,那么这种流佳作字符流,java.io.Reader叫做字符输入流,java.io.Writer表示字符输出流。
字节输入流和字节输出流都是抽象类,他们并不能被实例化。
下面先来介绍InputStream类:
InputStream中提供了一系列读取数据的方法,下面我来写几个比较常用的:
①int read():从输入流读取一个字节,并且转换成int类型返回。如果遇到输入流的结尾,则返回-1.
②int read(byte[] b):从输入流中读取若干字节,把他们保存到参数b指定的字节数组中。返回的整数表示读取的字节数。如果遇到输入流的结尾,则返回-1。
③read(byte[]b,int off,int len):从输入流读取若干个字节,把他们保存到参数b指定的字节数组中,off表示在字节数组中开始保存数据的起始下标,参数len表示读取的字节数目。返回的整数表示实际读取的字节数。如果遇到输入流的结尾,则返回-1.
④void close():关闭输入流。InputStream类中本身的close方法没有任何操作牡丹石他的一些子类覆盖了close方法。
⑤int available():返回可以从输入流中读取的字节数目。
贴段字节数组输入流的代码(ByteArrayInputStream类)
package thread1;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class filetest {
public static void main(String[] args) throws IOException{
byte [] a = new byte[]{1,-5,26,75,29,-9};
ByteArrayInputStream in = new ByteArrayInputStream(a,1,4);
int data;
while((data=in.read())!=-1)
{
System.out.print(data+" ");
}
in.close();
}
}
在此要注意的是,此处的byte转换到int类型的方法和强制类型转换中的方法是不一样的。
所以此处的结果为:251 26 75 29