使用多种数据类型将文件读取到arraylist

时间:2012-11-26 13:27:03

标签: java swing types text-files

我在从文本文件读取到arraylist时遇到问题。问题是我不知道如何阅读多种类型,因为在我的arraylist中有Points,Strings,booleans,因此linesplit不起作用。我检查了所有主题,但没有找到解决方案。

编辑:Elrendezes类看起来像

  class Elrendezes {
   protected Point Po;
   protected String hely;
   protected String foglalo;
   protected boolean foglalt;
  }

以下是我的文件的样子:

 java.awt.Point[x=16,y=13], 1, name1, false

读取的方法是

public static ArrayList<Elrendezes> readDataFromFile(){
      ArrayList<Elrendezes> ElrList = new ArrayList<Elrendezes>();
      FileInputStream fstream = null;
      try
      {
          fstream = new FileInputStream("src/files/DataFile.txt");
          BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
          String strLine = null ;
          String tokens[] = strLine.split(", ");


          while ((strLine = br.readLine()) != null)   {
           tokens = strLine.split(", ");
          // THIS DOES NOT WORK: ElrList.add(new Elrendezes(tokens[0], tokens[1], tokens[2], tokens[3]));
          }
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      finally {
          try { fstream.close(); } catch ( Exception ignore ) {}
      }
      return ElrList;

}

2 个答案:

答案 0 :(得分:1)

由于你可能不知道正则表达式,我将使用:

  1. 获取xy

    int v1 = strLine.indexOf("x=");
    int v2 = strLine.indexOf(",y=");
    int v3 = strLine.indexOf("]")  ; 
    string x = strLine.substring(v1 +2, v2);
    string y = strLine.substring(v2 +3, v3);
    
  2. 其余部分的断点表示。

    string secondpart = strLine.substring(v3+1);
    
  3. 现在仅使用昏迷作为分隔符来中断secondpart
  4. 使用Integer.parseInt()等转换字符串表示。

  5. 构建您的对象。

  6. 注意:写得匆忙,检查用于x,y和secondpart的索引是否正确。 我还假设输入是正确的。

答案 1 :(得分:0)

我认为你必须选择一个字符来分割字符串。

将拆分字符串转换为布尔值,整数等

Elrendezes(String[] s){
Point Po = s[0]; // dont know how to cast string to point, never done before
hely = s[1];
foglalo = s[2];
foglalt = Boolean.parseBoolean(s[3]);
}