我期待解析LAS文件(Log ASCII Standard),这种类型的文件具有不同语法的不同部分,例如:
"file.las"
~V
VERS . 3.00 : Comments
DLM . COMMA
~Curve
RHOB.M
~Data
1000.5, 35.2
1001.0, 40.6
这是我目前正在做的解析我的文件的方法,我为每个"语法"使用不同的for循环。
BufferedReader file = new BufferedReader(new FileReader(path));
System.out.print("Searching ~V");
for (String line = file.readLine(); line != null; line = file.readLine()) {
if(line.contains("~V")){
System.out.println("Success");
break;
}else{
//Do Nothing
}
}
System.out.print("Searching VERS");
for (String line = file.readLine(); line != null; line = file.readLine()) {
line = line.trim();
if(line.startsWith("VERS.")){
line = line.replaceAll(" ", "");
String lineWithoutComment = line.split(":")[0];
lasFileVO.setVersion(lineWithoutComment);
break;
}else{
//Do Nothing
}
}
if(lasFileVO.getVersion.startWith("3.0")){
System.out.print("Searching DLM");
//For loop
}

解析工作正常,我发现其他开发人员很容易理解(这是一件好事)。
有没有更好的方法来解析文件,包含带有不同语法的不同部分,然后是我的For循环系列?
修改 我已经看到了while循环方式,但我不知道如何实现它:
while ( (line = bufRead.readLine()) != null)
{
}

感谢您的建议! (抱歉我的拼写)
答案 0 :(得分:-1)
您有此项目可以帮助您解析LAS文件
http://www.jwitsml.org/dlis.html
这是使用此库的示例:
File file = new File("data.las");
// Instantiate a reader and read the LAS file
LasFileReader reader = LasFileReader(file);
LasFile lasFile = reader.readFile();
// Loop over all curves
for (LasCurve curve : lasFile.getCurves()) {
System.out.println("Curve name..: " + curve.getName());
System.out.println("Description.: " + curve.getDescription());
System.out.println("Unit........: " + curve.getUnit());
System.out.println("value type..: " + curve.getValueType());
// The curve values are accessed by curve.getValue(index)
}