Java中的简单逐行读取

Java中的简单逐行读取,java,file,io,Java,File,Io,我有以下格式的输入: 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中,最好的方法是什么?BufferedReader.readLine()

我有以下格式的输入:

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中,最好的方法是什么?

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()
,然后使用“”(空格)。您将获得预期的结果。

您试图做的事情称为标记化:)


在这方面与C++有点不同。Java InputStream在字节级别读取/写入内容,Java Reader类在字符级别读取/写入内容。根据您的示例,您应该选择一个读卡器类,例如java.io.StringReader,用于内存中字符串形式的内容或文件中的输入数据使用FileReader。读者有多种选择(请参阅)


除非您想自己查找换行符分隔符,否则可以将上述读取器之一与java.io.BufferedReader结合使用readLine()方法一次读取一行。Javadocs for BufferedReader中有一个例子,可以将其与文件读取器一起使用。

请看一下,从控制台上看如何?您可以使用java.util.Scanner,比如java.util.Scanner Scanner=new Scanner(System.in);并使用scanner.nextLine()从控制台获取您试图输入的内容,非常感谢!
// 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());
   }
}