关于javaIO 格式化输入,BufferedInputFile的一些疑问

最近看java编程思想到了IO部分,这一部分我有一些疑问。
首先是BufferedInputFile,书上用法如下:
StringReader In = new StringReader(BufferedInputFile.read(filepath));
这样把一个字符串流怼到内存里的一块儿。
我下面这样用了一下:
String S = new String(BufferedInputFile.read(filepath));
也可以用,甚至可以直接操作字符串一样的操作,那么问题来了:为什么他非要怼一管子??

第二个问题是格式化输入,他如下实现:
DataInputStream In = new DataInputStream(new BufferedInputStream(new FileInputStream(filepath)));
他说格式化输入可以用DataInputStream实现,那是什么意思??什么叫格式化输入??

StringReader并不常用,因为通常情况下使用String更简单一些。但是在一些需要Reader作为参数的情况下,就需要将String读入到StringReader中来使用了。

http://www.jobui.com/mianshiti/it/java/8216/