读取远程xml文件

时间:2011-07-15 10:26:53

标签: java xml file

我想读取远程位置上的xml文件。我使用以下代码

URL url = new URL(myurl);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
String strOutput = "";
System.out.println("start now");
//my code hangs after  priting start now            
while ((inputLine = in.readLine()) != null) {
       strOutput = strOutput + inputLine;
}

//contol doesnot reach here sometimes
in.close();

这是读取远程文件的好方法。什么是网络慢?请建议

2 个答案:

答案 0 :(得分:2)

评论已经表明存在一些不良做法。我将尝试列出可能导致性能不佳的原因:

  • 使用readLine()。您假设XML文件包含多行,每行以\r\n\r\n结尾。不一定是这种情况,导致readLine()需要很长时间才能完成的情况。
  • 连接String个对象。字符串在Java中是不可变的。连接字符串将创建一个新的String对象,如果结果字符串的大小非常大,这可能会变得昂贵。如果您的文档范围从几个字节到千字节,这可能不是问题,但如果它运行到兆字节,您就会遇到麻烦。请改用StringBuilderStringBuffer
  • 网络性能假设。获取文件并解析它可能更好,而不是打开连接,缓冲它的内容然后解析它。网络可能根本无法响应您及时读取文件的请求。通过预先获取文件,您可以避免在每个需要读取超出缓冲内容的readLine()上访问网络。

答案 1 :(得分:0)

为什么不考虑使用JAXB或其他经过优化的读取XML文件的XML读取器。