0

我输入了以下格式:

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 中执行此操作的最佳方法是什么?

4

5 回答 5

1

您正在尝试做的事情称为标记化:)

// 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());
   }
}
于 2013-11-12T04:45:40.340 回答
0

BufferedReader.readLine()读行,然后划分java.util.Scanner每一行。

于 2013-11-12T04:32:28.467 回答
0

您可以使用 BufferedReader 类来读取行内容。

BufferedReader br = new BufferedReader(new FileReader(new File("c:\\text.txt")));

使用br.readLine() 逐行读取内容。

于 2013-11-12T04:36:43.417 回答
0
    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:并随后使用 ' '(空格)。你会得到预期的结果。

于 2013-11-12T04:36:50.890 回答
0

在这方面,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 一起使用。

于 2013-11-12T04:55:07.387 回答