Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从文件读取的格式_Java_Regex - Fatal编程技术网

在Java中从文件读取的格式

在Java中从文件读取的格式,java,regex,Java,Regex,我有一个文件,我应该从中创建类模型的实例: class Model{ private a; private b; public Model1(double a, double b){ this.a=a; this.b=b; } } 该文件如下所示: .... some lines .... <Model> a=1.564 b=57.789 <Mod

我有一个文件,我应该从中创建类模型的实例:

class Model{
      private a;
      private b;
      public Model1(double a, double b){
          this.a=a;
          this.b=b;                     
      }
}
该文件如下所示:

....
some lines
....
<Model>
a=1.564
b=57.789
<Model>
.....
<Model>
a=10.56
b=35.99
<Model>
.....

那么,我应该如何从文件中读取
a
b

您可以使用json、键/值、序列化或XML格式的文件来读取和写入数据


这是操作xml文件最简单的方法之一。

不使用任何xml库

private class Model{
      private int a;
      private int b;
      //getters and setters
    }

    public List<Model> readModels(Scanner s){
        List<Model> list = new ArrayList<>();
        while(s.hasNextLine()){
              if(s.nextLine().equals("<Model>")){
                String valsA[] = s.nextLine().split("=");
                String valsB[] = s.nextLine().split("=");
                list.add(new Model(valsA[1],valsB[1]));
              }
        }
        return list;

     }
私有类模型{
私人INTA;
私人INTB;
//接球手和接球手
}
公共列表readModels(扫描仪){
列表=新的ArrayList();
而(s.hasNextLine()){
如果(s.nextLine().equals(“”){
字符串valsA[]=s.nextLine().split(“=”);
字符串valsB[]=s.nextLine().split(“=”);
增加(新型号(valsA[1],valsB[1]);
}
}
退货清单;
}

您的文件看起来像被黑客攻击的XML;我认为你找不到一个好的图书馆来读那本书。您必须自己实现它。@Dave我在
Scanner
类中找到了
next(Pattern Pattern)
方法。这里可以使用它吗?…或json,或键/值,或序列化,或自定义格式,等等。非常容易受到不一致文件(和缩进)的影响,OP似乎也在关闭模型部分,但除此之外,这可能是最简单的方法。是的,这只是一个简单的快速实现,但它非常密集:D
private class Model{
      private int a;
      private int b;
      //getters and setters
    }

    public List<Model> readModels(Scanner s){
        List<Model> list = new ArrayList<>();
        while(s.hasNextLine()){
              if(s.nextLine().equals("<Model>")){
                String valsA[] = s.nextLine().split("=");
                String valsB[] = s.nextLine().split("=");
                list.add(new Model(valsA[1],valsB[1]));
              }
        }
        return list;

     }