1

我想获取数据形式的文本文件,我使用扫描仪获取数据形式的文本文件。这是个人资料保存模式

name
status
friend
friend
.
.
(Blank line)

空白行是每个配置文件分开的。(朋友会循环直到下一行是空白行)

john 
happy
james

james
sad
john

我编写代码来获取这样的文件表单文本

try{
    Scanner fileIn = new Scanner(new FileReader("testread.txt"));
    while(fileIn.hasNextLine()){           
         String line = fileIn.nextLine();
         String linename = fileIn.nextLine();
         String statusline = fileIn.nextLine();
         println("name "+linename);
         println("status "+statusline);
         while(/*I asked at this*/)){
             String friendName = fileIn.nextLine();
             println("friend "+friendName); 
         }                              
    }
}catch(IOException e){
    println("Can't open file");
}

我应该使用什么条件来检测配置文件之间的空白行?

4

4 回答 4

3

您可以实现如下所示的自定义函数,nextLine如果它不为空,它将返回您。

 public static String skipEmptyLines(Scanner fileIn) {
    String line = "";
    while (fileIn.hasNext()) {
        if (!(line = fileIn.nextLine()).isEmpty()) {
            return line;
        }
    }
    return null;
}
于 2012-09-27T13:37:39.880 回答
1

您可以简单地检查您scanner.nextLine()的换行符"\n"(我的意思是"",因为nextLine()不会"\n"在任何行的末尾读取)..如果它相等,它将是一个空行..

if (scanner.nextLine().equals("")) {
    /** Blank Line **/
}

顺便说一句,您的代码有问题:-

while(fileIn.hasNextLine()){          
         String line = fileIn.nextLine();
         String linename = fileIn.nextLine();
         String statusline = fileIn.nextLine();

您假设您fileIn.hasNextLine()将确认接下来的三行是not null.

每次你做一个fileIn.nextLine()你需要检查它是否可用..否则你会得到异常......

*编辑: - 哦..我看到你已经处理了异常..那么就不会有问题了..但是你仍然应该修改上面的代码..它看起来不漂亮..

于 2012-09-27T13:19:49.563 回答
0

试试这个...

while(scanner.hasNextLine()){

    if(scanner.nextLine().equals("")){

            // end of profile one...

       }

}
于 2012-09-27T13:21:23.890 回答
0

在使用方法检查现有行后scanner.hasNextLine(),您可以使用此条件:

String line = null;
if((line = scanner.nextLine()).isEmpty()){
   //your logic when meeting an empty line
}

并在您的逻辑中使用该line变量。

于 2012-09-27T13:23:59.017 回答