流的方向:
输入流:数据源到程序(inputStream,Reader读进来)
输出流:程序到目的地(OutPutStream,Writer写出去)
处理数据单元:
字节流:按照字节读取数据(InputStream,OutputStream)
字符流:按照字符读取数据(Reader,Writer)
功能不同
节点流:直接从数据源或目的地读写数据
处理流:不直接连接到数据源或目的地,是处理流的流,童工对其他流的处理提高程序的性能。
Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。
输入流:数据源到程序(inputStream,Reader读进来)
输出流:程序到目的地(OutPutStream,Writer写出去)
处理数据单元:
字节流:按照字节读取数据(InputStream,OutputStream)
字符流:按照字符读取数据(Reader,Writer)
功能不同
节点流:直接从数据源或目的地读写数据
处理流:不直接连接到数据源或目的地,是处理流的流,童工对其他流的处理提高程序的性能。
Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。
以下是java中io中常用的流。
InputStream
抽象类java.io.InputStream是所有字节输入流类型的父类,该类中定义了以字节为单位读取数据的基本方法,并在其子类中进行了分化和实现.
三个基本的read方法:
int read()
int read(byte[] buffer)
int read(byte[] buffer,int offset,int length)
其他方法:
void close()
int available()
skip(long n)
boolean markSupported()
InputStream类层次
<pre name="code" class="plain">import java.io.File ;
import java.io.InputStream ;
import java.io.FileInputStream ;
public class InputStreamDemo{
public static void main(String args[]) throws Exception{ // 异常抛出,不处理
// 第1步、使用File类找到一个文件
File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
// 第2步、通过子类实例化父类对象
InputStream input = null ; // 准备好一个输入的对象
input = new FileInputStream(f) ; // 通过对象多态性,进行实例化
// 第3步、进行读操作
byte b[] = new byte[1024] ; // 数组大小由文件决定
int len = 0 ;
int temp = 0 ; // 接收每一个读取进来的数据
while((temp=input.read())!=-1){
// 表示还有内容,文件没有读完
b[len] = (byte)temp ;
len++ ;
}
// 第4步、关闭输出流
input.close() ; // 关闭输出流\
System.out.println("内容为:" + new String(b,0,len)) ; // 把byte数组变为字符串输出
}
};