java.io包是用于输入输出(I/O)的包。这里,使用了Decorator模式。
首先,可以像下面这样生成一个读取文件的实例。
1 | Reader reader = new FileReader("datafile.txt"); |
然后,也可以像下面这样在读取文件时将文件内容放入缓冲区。
1 | Reader reader = new BufferedReader( |
这样,在生成BufferedReader类的实例时,会指定将文件读取到FileReader类的实例中。
再然后,也可以像下面这样管理行号。
1 | Reader reader = new LineNumberReader( |
无论是LineNumberReader类的构造函数还是BufferedReader类的构造函数,都可以接收Reader类(的子类)的实例作为参数,因此可以像上面那样自由地进行各种组合。
还可以管理行号,但不进行缓存处理。
1 | Reader reader = new LineNumberReader( |
接下来,还会管理行号,进行缓存,但是不从文件中读取数据,而是从网络中读取数据。
1 | java.net.Socket socket = new Socket(hostname, portnumber); |
这里使用的InputStreamReader类既接收getInputStream方法返回的InputStream类的实例作为构造函数的参数,也提供了Reader类的接口(API)。