【发布时间】:2022-01-05 15:19:27
【问题描述】:
我的工作是在 WikiBooks 上搜索一本书并导出相应的 XML 文件。该文件应稍后编辑。但是,错误发生得更早。 我的想法是读取页面并将其逐行写入 XML 文件。这是我的代码:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Welches Buch wollen Sie suchen?");
book = (reader.readLine());
book = replaceSpace(book);
URL url = new URL("https://de.wikibooks.org/wiki/Spezial:Exportieren/" + book);
URLConnection uc = url.openConnection();
uc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0");
uc.connect();
BufferedReader xmlReader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
File file = new File("wiki.xml");
FileWriter writer = new FileWriter(file);
String inputLine;
while ((inputLine = xmlReader.readLine()) != null) {
writer.write(inputLine + "\n");
}
xmlReader.close();
代码执行时没有错误消息,但保存的文件以单词中间结尾,因此不完整。 我该如何解决这个问题?
【问题讨论】:
-
首先:您获得二进制数据,但将其转换为字符串(读取器)并返回,这是不必要的,并且可能是问题的根源(但可能不是您遇到的具体问题)。尽量避免使用
String/char[]/Reader和Writer,因为您所做的只是将数据从A 转移到B。使用byte[]/InputStream/OutputStream和可能的ByteBuffer。第二:你永远不会关闭FileWriter,这可能是问题的原因。