由于以前的实现要求,我必须使用InputStream
,无法使用BufferedReader
。
我的测试工作台使用了BufferedReader
和while循环,如下所示:
while ((line = br.readLine()) != null)
然而,现在需要将br作为InputStream
(并且将被重命名)。有没有一种方法可以使用InputStream
以这种方式读取,或者我必须逐字节读取并搜索\n
?
由于以前的实现要求,我必须使用InputStream
,无法使用BufferedReader
。
我的测试工作台使用了BufferedReader
和while循环,如下所示:
while ((line = br.readLine()) != null)
然而,现在需要将br作为InputStream
(并且将被重命名)。有没有一种方法可以使用InputStream
以这种方式读取,或者我必须逐字节读取并搜索\n
?
// assuming that you have an InputStream named inputStream
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
String line = null;
while((line = br.readLine()) != null) {
// use line here
}
} catch (IOException e) {
e.printStackTrace();
}
try (Scanner scanner = new Scanner(inputStream)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// use line here
}
}
您可以像这样更改代码::
public String readLine(InputStream inputStream) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int r;
for (r = inputStream.read(); r != '\n' && r != -1 ; r = inputStream.read()) {
baos.write(r);
}
if (r == -1 && baos.size() == 0) {
return null;
}
String lines = baos.toString("UTF-8");
return lines;
}