Java - 使用InputStream读取行

时间:2016-01-22 19:40:40

标签: java inputstream

我使用InputStream来读取一些数据,所以我想读取字符直到新行或' \ n'。

3 个答案:

答案 0 :(得分:27)

如果您从文件中读取

,则应将BufferedReaderFileInputStreamReader一起使用
BufferedReader reader = new BufferedReader(new FileInputStreamReader(pathToFile));
如果您从其他任何InputStreamReader

中读取,请

或使用InputStream

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

然后在循环中使用其readLine()方法

while(reader.ready()) {
     String line = reader.readLine();
}

但如果你真的喜欢InputStream,那么你可以使用像这样的循环

InputStream stream; 
char c; 
String s = ""; 
do {
   c = stream.read(); 
   if (c == '\n')
      break; 
   s += c + "";
} while (c != -1);

答案 1 :(得分:1)

对于文件,以下内容将允许您阅读每一行:

import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.File;

public static void readText throws FileNotFoundException(){

     Scanner scan = new Scanner(new File("filename.txt"));

     while(scan.hasNextLine()){
         String line = scan.nextLine();

     }
}

答案 2 :(得分:0)

可以使用BufferedReader和Scanner读取输入流。如果您没有充分的理由,最好使用BufferedRead(有关BufferedReader与Scanner see的广泛讨论。

我还建议将Buffered Reader与try-with-resources一起使用,以确保资源被自动关闭。 see

请参见以下代码

try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
        while (reader.ready()) {
            String line = reader.readLine();
            System.out.println(line);
        }
    }catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }