使用InputStream读取文件的一行

Bry*_*son 1 java inputstream

我要求由于之前的实现使用了InputStream,我不能用了BufferedReader.

我的测试台使用了a BufferedReader和while循环,如下所示:

while ((line = br.readLine()) != null)
Run Code Online (Sandbox Code Playgroud)

但是br现在必须是InputStream(并且将被重命名).是否有任何方式以这种方式阅读InputStream,或者我是否必须一次读取字节并搜索\n

Hov*_*els 5

如果必须使用InputStream读取,则将其包装到InputStreamReader中,然后将其包装在BufferedReader中,允许您使用熟悉的BufferedReader方法.在这种情况下,无需进行非缓冲输入.

// 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();
}
Run Code Online (Sandbox Code Playgroud)

或者,将InputStream包装在Scanner对象中:

try (Scanner scanner = new Scanner(inputStream)) {
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        // use line here
    }
} 
Run Code Online (Sandbox Code Playgroud)