Java 的流策略:
流过滤器的分层:
1. 一部分流可以从文件或其他地方接收字节.()
FileInputStream(), URL 类中的openStream
FileInputStream fin=new FileInputStream(“file1.txt”); //当前路径的文件
或者
File f=new File(“file1.txt”);
FileInputStream fin =new FileInputStream(f);
这些类只在字节层次上支持读写,所以只能从fin中读取字节或者字节数组
Byte b=(byte)fin.read();
2. 另一些流可以将字节组合成更有用的数据类型. 比如DataInputStream和PrintWriter
Java程序员通过将一个已经存在的流传递给另一个流的构造器的方法,将这2中流结合起来,结合后的流被称为过滤流。
比如为了能从文件中读取数值,首先创建一个FileInputStream流,然后传入到DataInputStream的构造器。
FileInputStream fin=new FileInputStream(“file1.txt”);
DataInputStream din=new DataInputStream (fin);
Double a=din.readDouble();
利用上面语句建立的输入流没有与一个新的磁盘文件关联。但是,现在能使用一种功能更多的接口了。
一般情况下流不能进行缓冲处理,每次对流read都会要求操作系统发送一个新字节,如果想要对文件进行缓冲操作和数据输入操作,需要用下面结构的构造器
DataInputStream din=new DataInputStream (new BufferedInputStream(new FileInputStream(“file1.txt”)));
流的类介绍:
FileInputStream(String name)
新建一个新的文件输入流,name是文件的路径
FileInputStream(File f)
新建一个新的文件输入流,使用封装在File中的对象
FileOutputStream(String name)
新建一个name字符串指定的输出流。路径名不是绝对路径,而是相对于当前的工作路径。该方法会自动删除同名的文件。
FileOutputStream(String name, Boolean append)
当append位true时,是将数据追加到文件的结尾。存在的同名文件不会被删除
FileOutputStream(File f)
新建一个新的文件输出流,使用封装在File中的对象。该方法会自动删除同名的文件。
BufferedInputStream(InputStream in)
新建一个默认大小的缓冲流,缓冲的输入流从一个流中读取字符,而不会每次都引起对设备的访问。当缓冲区空时,一个新的数据块将会被读入缓冲区。
BufferedInputStream(InputStream in, int n)
用户自定义缓冲区大小
BufferedOutputStream(InputStream in)
新建一个默认大小的缓冲流,缓冲输出流收集写入字符,而不会每次都引起对设备的访问。当缓冲区满或者流被刷新时,数据被写入设备。
BufferedOutputStream(InputStream in, int n)
用户自定义缓冲区大小