继续读取txt文件并保存字符串java

时间:2013-03-08 16:22:54

标签: java file

我想要最好的方法来继续读取txt文件中的行并将它们保存到变量中以便以后处理 我知道如何编码它,但我不能想到保存字符串的最佳方法,例如变量或其他东西,并在我到达最后处理它们 编辑:

Scanner in = new Scanner(new FileReader(filename));

    while(in.hasNextLine()){
        answer=in.nextLine();
        if (answer.contains("-")) {
            temp=answer.split(":");
            value=Integer.parseInt(temp[0]);
            freq=Integer.parseInt(temp[1]);
        }

    }

在我到达txt文件末尾之后我想要比较频率值并将它们从最小到大的存档

3 个答案:

答案 0 :(得分:2)

阅读整个文件的最简单方法是使用the Files convenience methods,例如:

List<String> lines = Files.readAllLines(Paths.get("path/to/your/file"),
                             Charset.forName("UTF-8"));

然后,您可以处理列表,并使用这些行执行您需要的操作。

答案 1 :(得分:0)

如果要单独保存行,可以使用数组,否则只需将文件内容添加到字符串变量中。

但是您应该指定您想要对内容做什么,以便我们为您提供帮助。

答案 2 :(得分:0)

这样的事情应该使用scanner

来做
Scanner s = new Scanner(file object pointing at file));
List<String> listOfLines = new ArrayList<String>();
while (s.hasNext()) {
   listOfLines.add(s.next());
}
s.close();

但是有很多方法可以使用BufferedReaders和其他java类来完成它。听起来你的问题的关键在于使用什么数据结构。您应该使用列表,因为这会动态增长。除非您事先知道文件中的行数

,否则数组不适合您

更新

如果你想添加val和freq,那么我会创建另一个类。

class StuffHolder {
   private final String val;
   private final String freq;

   public StuffHolder(String val, String freq) { 
      this.val = val;
      this.feq = freq;
   }
   //plus some getters

}

然后将您的列表更新为

List<StuffHolder> listOfLines = new ArrayList<StuffHolder>();

我相信你能想到比StuffHolder更好的名字;)

如果您正在尝试计算频率,那么如果val是关键字,那么使用地图可能会更好。 Val可能是地图中的关键,然后每次找到val

的实例时,您可以将值增加1