【发布时间】:2016-04-29 12:30:21
【问题描述】:
我使用 InputStream 读取一些数据,所以我想读取字符直到换行或'\n'。
【问题讨论】:
-
使用
BufferedReader及其readLine方法。欺骗:stackoverflow.com/questions/5868369/…
标签: java inputstream
我使用 InputStream 读取一些数据,所以我想读取字符直到换行或'\n'。
【问题讨论】:
BufferedReader 及其readLine 方法。欺骗:stackoverflow.com/questions/5868369/…
标签: java inputstream
对于文件,以下内容将让您阅读每一行:
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();
}
}
【讨论】:
var scan = new Scanner(InputStream source)
如果您从文件中读取,您应该使用 BufferedReader 和 FileInputStreamReader
BufferedReader reader = new BufferedReader(new FileInputStreamReader(pathToFile));
如果您从任何其他InputStream 阅读,请使用InputStreamReader
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);
【讨论】:
new BufferedReader(new InputStreamReader(new FileInputStream("path/to/file"), "UTF8"));
可以使用 BufferedReader 和 Scanner 读取输入流。如果您没有充分的理由,最好使用 BufferedRead(广泛讨论 BufferedReader vs Scanner see。
我还建议将缓冲阅读器与 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();
}
【讨论】: