从文件中读取一行文本并将其存储到字符串中

问题描述:

基本上我想要做的是从文本文件存储整行并将其存储到一个字符串中。该线是班级部门,班级编号和正在学习的学期。例如,“CSCE 155A - 2011年秋季”。我想把所有这些放到一个名为“description”的字符串中。从文件中读取一行文本并将其存储到字符串中

className = scanner.next(); 
System.out.println(className); 

这行代码只会输出第一部分,CSCE。有没有办法储存整条生产线?我能想到的唯一的事情就是几个scanner.next()和打印报表,但似乎凌乱

+2

你想要[' nextLine()'](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine())。 – rgettman

+0

不要忘记,如果答案满意地解决了您的问题,您可以[接受它](http://meta.stackexchange.com/a/5235/227183)。 –

从这串Scanner.next()文档:

查找并从该扫描仪返回下一个完整标记。 A 完整令牌的前后是与 定界符模式匹配的输入。即使先前调用hasNext()返回true,此方法也可能在等待输入为 扫描时阻塞。

因为您的示例行是:“CSCE 155A - Fall 2011”,它的next()将停在第一个空格处。

你需要的是Scanner.nextLine():

className = scanner.nextLine(); 

如果您使用的是Java 7,可能要使用NIO.2,如:

public static void main(String[] args) throws IOException { 
    // The file to read 
    File file = new File("test.csv"); 

    // The charset for read the file 
    Charset cs = StandardCharsets.UTF_8; 

    // Read all lines 
    List<String> lines = Files.readAllLines(file.toPath(), cs); 
    for (String line : lines) { 
     System.out.println(line); 
    } 

    // Read line by line 
    try (BufferedReader reader = Files.newBufferedReader(file.toPath(), cs)) { 
     for (String line; (line = reader.readLine()) != null;) { 
      System.out.println(line); 
     } 
    } 
}