我直接写 DataInputStream in =new DataInputStream("d:\\abac.txt"); 为什么不行??
这里是向上转型的一个例子,我劝你读一下thinking in java 2nd. DataInputStream 不能处理文件,FileInputStream是为了和文件打交道,BufferedInputStream是为了加速,建立内存缓冲区,不用每次读写操作都访问文件,DataInputStream是为了提供一个完整的界面,让你可以处理int,long,char等多种数据类型。
DataInputStream //constructor public DataInputStream(InputStream in);BufferedInputStream //constructor public BufferedInputStream(InputStream in); public BufferedInputStream(InputStream in, int size);FileInputStream //constructor public FileInputStream(String name); public FileInputStream(File file); public FileInputStream(FileDescriptor fbObj);可以看出,DataInputStream, BufferedInputStream 不能直接由文件名来定义。
BufferedInputStream 是缓冲输入流。
FileInputStream 是文件输入流。
先把 "d:\\abac.txt" 的内容读到 BufferedInputStream 中,然后在读到输入流中。
为什么不行??
DataInputStream 不能处理文件,FileInputStream是为了和文件打交道,BufferedInputStream是为了加速,建立内存缓冲区,不用每次读写操作都访问文件,DataInputStream是为了提供一个完整的界面,让你可以处理int,long,char等多种数据类型。
//constructor
public DataInputStream(InputStream in);BufferedInputStream
//constructor
public BufferedInputStream(InputStream in);
public BufferedInputStream(InputStream in, int size);FileInputStream
//constructor
public FileInputStream(String name);
public FileInputStream(File file);
public FileInputStream(FileDescriptor fbObj);可以看出,DataInputStream, BufferedInputStream 不能直接由文件名来定义。