难道一个Java扫描器隐式创建,即使你不把它传递一个缓冲区?
-
20-09-2019 - |
题
如果我有其中每个数字表示一个字节以下示例文件(123具有字节1,2和3):
123456789
让我们说我创建一个FileInputStream。这读取由字节的二进制字节。所以.read()返回1,然后2,等等。现在让我们说我创建一个缓冲区。初始块,读入(如果我理解正确的缓冲区)为1-5。这使得它不仅在逐字节读取,但在整个字符线等的情况下,但如果我打.read()再次,我在6开始,不要在那里的BufferedReader停止(所以,如果3是线断裂,并且我告诉的BufferedReader打印第一线,它打印1-2,然后用.read()从所述的FileInputStream给我6,而不是3。)
为了能够通过分隔符来分析数据,并扫描仪隐含创建这样一个BufferedReader如何创造一个缓冲的缓冲,以便它可以找到换行,等等?并且如果我通过一个单独的FileInputStream到扫描仪,使用.read()将不打印第一分隔符扫描器发现以下的第一个字节,而是以“块”的端部的扫描仪了?
解决方案
是强>
从java.util.Scanner
代码:
// Internal buffer used to hold input
private CharBuffer buf;
// Size of internal character buffer
private static final int BUFFER_SIZE = 1024; // change to 1024;
其他提示
这不是很明显,但如果你在扫描仪的API文档仔细看,你看,它的基础上的 Readable
接口 - 在该接口的唯一的方法是基于一个缓冲器。所以,是,扫描仪隐式地创建的缓冲器。
不隶属于 StackOverflow