【发布时间】:2015-09-24 02:53:55
【问题描述】:
我有一个长文本文件,我想从中读取并提取一些数据。使用 JavaFX 和 FXML,我使用 FileChooser 加载文件以获取文件路径。 我的 controller.java 有以下内容:
private void handleButtonAction(ActionEvent event) throws IOException {
FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(stage);
System.out.println(file);
stage = (Stage) button.getScene().getWindow();
}
文本文件示例:请注意,部分文件内容分为两行。例如 -Ba\ 10.10.10.3 是第一行的一部分。
net ip-interface create 10.10.10.2 255.255.255.128 MGT-1 -Ba \
10.10.10.3
net ip-interface create 192.168.1.1 255.255.255.0 G-1 -Ba \
192.168.1.2
net route table create 10.10.10.5 255.255.255.255 10.10.10.1 -i \
MGT-1
net route table create 10.10.10.6 255.255.255.255 10.10.10.1 -i \
MGT-1
我正在寻找一种方法来搜索这个(文件)并输出以下内容:
MGT-1 ip-interface 10.10.10.2
MGT-1 Backup ip-interface 10.10.10.3
G-1 ip-interface 192.168.1.1
G-1 Backup Ip-interface 192.168.1.2
MGT-1 route 10.10.10.5 DFG 10.10.10.1
MGT-1 route 10.10.10.6 DFG 10.10.10.1
【问题讨论】:
-
你能用awk吗? jawk.sourceforge.net 你的结果中 DFG 来自哪里?
-
感谢您的评论!我是Java新手,所以我正在寻找指针。如果我需要使用 AWK,那就这样吧。 DFG 代表默认网关。网络路由表(通过默认网关 10.10.10.1 为 10.10.10.5-6 创建静态路由)
-
如果内存不是一个约束,你可以:
List<String> lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);得到一个包含所有行的列表。然后,您可以遍历这些行并根据需要解析它们。 -
关于如何以某种方式解析它们以获得上述输出的任何建议。例如,对于模式“MGT-1 -Ba \”,我如何输出下一行? 10.10.10.3 我该怎么做?或者我怎样才能在“ip-interface create”之后输入IP地址。 10.10.10.2?我正在寻找有关如何执行解析以获取上述输出数据的想法。我听说 Java 8 使用流,这是我可以在这里使用的东西吗?
-
“Backup”(不在输入中)和“Ip-interface”(大小写变化)从何而来?
标签: java file javafx java-8 javafx-8