所以这是一个非常简单的问题,我只是没有看到一个简单的解决方案:
我试图通过 InputStream 获取数据列表,循环直到我到达流的末尾。在每次迭代中,我打印通过 InputStream 传递的下一行文本。我让它工作,但有一个小问题:我截断了每一行的第一个字符。
代码如下:
while (dataInputStream.read() >= 0) {
System.out.printf("%s\n", dataInputReader.readLine());
}
输出:
classpath
project
est.txt
现在,我知道这里发生了什么:while
循环中的 read()
调用获取每行的第一个字符,所以当该行通过时进入循环,那个字符丢失了。问题是,我不知道如何设置循环来防止这种情况发生。
我想我只是需要对此有新的看法。
最佳答案
DataInputStream
的
readLine
已弃用。您可以尝试用 BufferedReader
包装它:
try
{
String line;
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( dataInputStream ) );
while( (line = bufferedReader.readLine()) != null )
{
System.out.printf("%s\n", line);
}
}
catch( IOException e )
{
System.err.println( "Error: " + e );
}
另外,我不确定,由于这个规范,使用 available() 是个好主意:
* <p>Note that this method provides such a weak guarantee that it is not very useful in
* practice.
关于java - 循环遍历 InputStream 截断数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012764/