gpt4 book ai didi

java - 使用 while 循环读取一个文件,写入另一个文件

转载 作者:行者123 更新时间:2023-12-02 02:41:12 25 4
gpt4 key购买 nike

我正在尝试制作一个程序,该程序读取包含大量文本的文本文件,使用扫描仪 useDelimiter 函数分割文本,并将文本打印到另一个文件。

要读取的文件中的文本看起来像这样(虽然更长):

"< wpt sometext> < desc sometext < wpt sometext> < desc sometext "这些是 GPX 文件中的航点。

我希望它在“”处分开,只要它读取另一个“

但是当我将其打印到另一个文本文件时,它只打印第一个航路点...

这是到目前为止我的代码。我创建了一个虚拟文件来过滤掉原始文件中的元数据。程序应该从这个虚拟文件中读取。

public void openFile() {
Chooser = new JFileChooser("C:\\Users\\danie\\Desktop\\");
Chooser.setAcceptAllFileFilterUsed(false);
Chooser.setDialogTitle("Open file");
Chooser.addChoosableFileFilter(new FileNameExtensionFilter("*.gpx", "gpx"));
Chooser.addChoosableFileFilter(new FileNameExtensionFilter("*.txt", "txt"));
Chooser.addChoosableFileFilter(new FileNameExtensionFilter("*.csv", "csv"));
int returnVal = Chooser.showOpenDialog(null);

try {
Dummy = new Scanner(Chooser.getSelectedFile());
} catch (FileNotFoundException E) {
System.out.println("Error: " + E);
}
}

public void createFile() {
Dummy.useDelimiter("<wpt");
if (Dummy.hasNext()) {
String Meta = Dummy.next();
}
Dummy.useDelimiter("\\s[<wpt]\\s|\\s[</wpt>]\\s");
try {
while (Dummy.hasNext()) {
String Test = Dummy.next();
DummyFile = new File("Dummy.txt");
Output = new PrintWriter(DummyFile);
Output.print(Test);
Output.println();
Output.flush();
//Output.close();
}
Input = new Scanner(DummyFile).useDelimiter("\\s<wpt\\s*");
String Final = Input.next();
boolean Done = false;
while (Done != true) {
TestFile = new File("C:\\Users\\danie\\Desktop\\Test.txt");
Writer = new PrintWriter(TestFile);
Writer.println(Final);
Writer.flush();
if (Input.hasNext()) {
Done = true;
}
}
} catch (FileNotFoundException EXE) {
System.out.println("Error: " + EXE);
}
Dummy.close();
}
}

最佳答案

您将其指定为分隔符:

 Dummy.useDelimiter("\\s[<wpt]\\s|\\s[</wpt>]\\s");

因此,扫描程序会查找由 " <wpt </wpt> " 分隔的 token .
这不是你想要的。
你有一些<wpt “标签”并且您想要检索每个标签的内容 <wpt>标签。

您可以使用 GPX 解析器或通过读取带有 BufferedReader 的文件来手动进行解析。 .

自己动手处理单一类型tag真的很直。
一旦检测到"<wpt" String,您就读取缓冲区中的文件内容。 ,您创建一个新对象,然后继续读取该文件以评估该对象的状态,并对下一个遇到的情况执行相同的操作:"<wpt" String ,等等......

关于java - 使用 while 循环读取一个文件,写入另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com