关于java流的一点看法

今天学习java的时候用到了流,说白了就是往文件里写东西。

之前一直不是很清楚什么InputStream,InputStreamReader,BufferedReader之类的,今天就稍微根据书上的内容整理了一些。

要想实现一个从文件写入或读取的操作,首先建立一个流,代码如下:

BufferedReader reader = new BufferedReader(new FileReader(new file("path")));
BufferedWriter writer = new BufferedWriter(new FileWriter(new file("path")));

之前一直迷糊的就是他为什么需要这么多次的链接,直接用一个不就好了吗,原来这里面还是有说法的。

首先说new file(),这个生成出来的对象只是对应本地文件的一个表示,你可以获得这个文件或者目录(file可以生成目录)本身的信息,但是不能获得他里面的内容,也就是说我们还需要一个类来处理他里面的内容,这时我们用到了FileReader。

FileReader可以通过接收一个file来生成对象,这时候我们就可以获得file的内容了,那么就奇怪了,既然我们都可以对文件内容进行读取或写入了,那BufferedReader和BufferedWriter又是干什么的呢,这里书上的一个例子就很形象:写入文件就好像我们去超市购物,如果我们只有FileWriter,我们就好像空手去购物一样,一次只能拿一样东西,然后就得去付钱,这样很不方便,不高效,如果我们有了BufferedWriter,就好像我们有了一个购物车,我们就可以先把想买的东西放在购物车中一起支付,这样就便捷多了。

BufferedWriter有一个缓冲区,可以暂存一些数据,等到存满的时候一并写入到硬盘上,可以减少对硬盘操作的次数,如果你想要强制写入硬盘的话,只要使用writer.flush()函数就可以了。

这次就用到了这几个方法,等到以后再用到其他方法的时候再详细讨论。

 

PS:补充几个上述类的构造方法

  File的构造方法:

File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
          通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri)
          通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

  FileReader的构造方法:

FileReader(File file)
          在给定从中读取数据的 File 的情况下创建一个新 FileReader
FileReader(FileDescriptor fd)
          在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader
FileReader(String fileName)
          在给定从中读取数据的文件名的情况下创建一个新 FileReader

  FileWriter的构造方法

FileWriter(File file)
          在给出 File 对象的情况下构造一个 FileWriter 对象。
FileWriter(File file, boolean append)
          在给出 File 对象的情况下构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd)
          构造与某个文件描述符相关联的 FileWriter 对象。
FileWriter(String fileName)
          在给出文件名的情况下构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)
          在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数据的 boolean 值。

  BufferedReader的构造方法

BufferedReader(Reader in)
          创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
          创建一个使用指定大小输入缓冲区的缓冲字符输入流。

  BufferedWriter的构造方法

BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
          创建一个使用指定大小输出缓冲区的新缓冲字符输出流。
posted @ 2013-05-28 01:26  zydmayday  阅读(156)  评论(0编辑  收藏  举报