【发布时间】:2013-06-05 10:51:44
【问题描述】:
所以这是一个非常简单的问题,我只是没有看到一个简单的解决方案:
我正在尝试通过 InputStream 获取数据列表,循环直到到达流的末尾。在每次迭代中,我打印通过 InputStream 传递的下一行文本。我有它的工作,但有一个小问题:我截断每行的第一个字符。
代码如下:
while (dataInputStream.read() >= 0) {
System.out.printf("%s\n", dataInputReader.readLine());
}
还有输出:
classpath
project
est.txt
现在,我知道这里发生了什么:read() 在我的while 循环中调用每行的第一个字符,因此当该行被传递到循环中时,该字符丢失了。问题是,我不知道如何设置循环来防止这种情况发生。
我想我只是需要用新的眼光来看待这个问题。
【问题讨论】:
-
这个类上有一个
available()方法,你试过了吗? -
您的变量是
dataInputStream还是dataInputReader?它的类型是什么?请让问题更清楚。 -
@JonSkeet 我的猜测是有一个阅读器包裹在输入流上(并且该流已经过数据测试......奇怪的操作方式但是哦)
-
对不起,dataInputStream是来自socket的流,dataInputReader是来自dataInputStream的BufferedReader。我是这种事情的新手,所以我欢迎 C&C。
-
好的,你最终想对你的数据做什么?只能逐行阅读?