我输入了以下格式:
12 : 13 24 1 2
2 : 1 4
9 : 0 1 82
...
我想在每一行中读取一个 StringStream,然后逐个读取每个 StringStream。
例如,第 1 行将存储为 StringStream “12 : 13 24 1 2”,然后我可以逐段读取它(“12”、“:”、“13”、“24”、“1 ", "2") (类似于 C++ 中的 cin >> stingstream)。
在 Java 中执行此操作的最佳方法是什么?
您正在尝试做的事情称为标记化:)
// pretty standard open file with buffered reader.
File file = new File("inputFileName");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedFileReader = new BufferedReader(fileReader);
// The string that will hold the content of each line.
String line;
// Read each line and store string content in line.
while((line=bufferedFileReader.readLine())!=null)
{
// Create a tokenizer to split the string into tokens.
StringTokenizer tokenizedLine= new StringTokenizer(line);
// For each token in the current line so something
while (while (tokenizedLine.hasMoreTokens())
{
System.out.println(tokenizedLine.nextToken());
}
}
BufferedReader.readLine()
读行,然后划分java.util.Scanner
每一行。
您可以使用 BufferedReader 类来读取行内容。
BufferedReader br = new BufferedReader(new FileReader(new File("c:\\text.txt")));
使用br.readLine() 逐行读取内容。
FileReader fileReader = new FileReader(new File("sample.txt"));
BufferedReader bufferedReader = new BufferedReader(fileReader);
String str;
while((str=bufferedReader.readLine())!=null)
{
System.out.println(str);
}
阅读该行后,您可以使用split()
on:
并随后使用 ' '(空格)。你会得到预期的结果。
在这方面,Java 与 C++ 有点不同。Java InputStream 在字节级别读/写,Java Reader 类在字符级别读/写。给定您的示例,您应该选择 Reader 类之一,例如 java.io.StringReader 用于内存中字符串形式的内容或文件中的输入数据使用 FileReader。读者有多种选择(请参阅http://docs.oracle.com/javase/6/docs/api/)
除非您想自己查找换行符,否则可以将上述读取器之一与 java.io.BufferedReader 结合使用 readLine() 方法一次读取一行。Javadocs 中有一个用于 BufferedReader 的示例,用于将其与 FileReader 一起使用。