在NetBeans中逐行读取文本文件

时间:2018-12-09 12:10:36

标签: java

我正在使用以下代码从文件中读取

int lineNumber = 0;
  try{
       BufferedReader in = new BufferedReader (new FileReader("electric.txt"));
  String line = null;
    while((line = in.readLine()) != null){
     lineNumber++;
     system.out.println("Line "+ lineNumber + " : "+ line);
     }
   } catch(IOException e){
     e.printStackTrace();
   }

我的文件的每一行都有特定的值,例如第一行是int,第二个字符串,第三个布尔值等等。

我的问题是如何获取变量中的每种数据类型?

2 个答案:

答案 0 :(得分:2)

基本上,以一种幼稚的方式,您可以根据需要进行多次读取:

String firstLine = in.readLine();
String secondLine = in.readLine();
...

然后您可以执行以下操作:

Whatever dataObject = new Whatever(firstLine, secondLine, ...);

例如(也许在一个循环中,因为您可能想读取许多数据对象的数据,而不仅仅是单个数据对象)。

换句话说:您在一些帮助程序变量中读取了必需的属性,然后将其推入要填充数据的对象中。优点:这适用于非常大的数据,因为一次只能读取几行。缺点:您必须担心无效文件,缺少行以及诸如此类的事情(因此您需要大量的错误处理)。

或者:首先简单地将整个文件读到内存中,例如使用List<String> allLines = java.util.Files.readAllLines(somePathToYourFile);,然后,对这些allLines进行迭代,以进一步处理您的内容,现在不必担心IOExceptions了。

答案 1 :(得分:0)

如果要检查行是布尔值,整数还是字符串,这是可能的解决方案。如果您需要检查该行是多头还是空头,双倍或浮动,等等。您仍然必须处理这些情况。

System.out.println(“ Line” + lineNumber +“:” + line +“,数据类型:” + typeChecker(line));

public static String typeChecker(String line){
    if (line.equals("true")||line.equals("false"))
    return "boolean";
    else{ if (isInteger(line))
        return "int";
    }
    return "String";
}

public static boolean isInteger(String s) {
    try { 
       Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
       return false; 
    } catch(NullPointerException e) {
       return false;
    }
return true;
}