Java 流概念

来源:互联网 发布:汽车导航仪网络不可用 编辑:程序博客网 时间:2024/06/01 07:47

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. 另一些流可以将字节组合成更有用的数据类型.比如DataInputStreamPrintWriter

 

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)

appendtrue时,是将数据追加到文件的结尾。存在的同名文件不会被删除

FileOutputStream(File f)

新建一个新的文件输出流,使用封装在File中的对象。该方法会自动删除同名的文件。

BufferedInputStream(InputStream in)

新建一个默认大小的缓冲流,缓冲的输入流从一个流中读取字符,而不会每次都引起对设备的访问。当缓冲区空时,一个新的数据块将会被读入缓冲区。

BufferedInputStream(InputStream in int n)

用户自定义缓冲区大小

BufferedOutputStream(InputStream in)

新建一个默认大小的缓冲流,缓冲输出流收集写入字符,而不会每次都引起对设备的访问。当缓冲区满或者流被刷新时,数据被写入设备。

BufferedOutputStream(InputStream in int n)

用户自定义缓冲区大小