java - 如何使用 Java 从 Web 服务保存大文件?

标签 java xml web-services inputstream

我必须调用一个 REST Web 服务,该服务以 xml 形式返回大量数据。数据大小约为490m。每次我尝试调用该服务时,我都会耗尽内存。我想做的就是将这些数据写入文件。

有没有办法以小块的形式读写数据以避免内存不足?

这是我尝试过的;

public class GetWs {

   private static String url ="http://somewebservice";
   public static void main(String[] args) {

    InputStream in;
    OutputStream out;
    try {
          out = new FileOutputStream("testoutfile.txt");
          in = new URL(url).openStream();
          int b;
          do {
               b = in.read();
               if (b != -1) {
            out.write(b);
                 out.flush();
               }
           } while (b != -1);
            in.close();out.close();     
    } catch (Exception e) {
        e.printStackTrace();
     }

   }

}

最佳答案

尝试压缩并流式传输到文件输出流,最好使用 NIO。

如果您必须解析和验证 XML,请尝试使用 STAX 解析器。

关于java - 如何使用 Java 从 Web 服务保存大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914881/

相关文章:

java - Android 空指针异常/调用目标异常

java - Intellij 2021.3.2,JavaFX Maven 项目未正确解析依赖项

java - 使用 jacksonObjectMapper 将 JSON 反序列化为不同类型

c# - 解析 XML 文件 - 选项?

c# - asp.net 中的 Web 服务 wsdl 中的默认值

java - 如何通过 Java 中的套接字获取错误流?

c - 如何在不使用字符串函数的情况下使用 libXML2 读取 XML?

java - 在 Java 中,如何将 JSON 或 XML 字符串映射到同一个 POJO,但 XML 具有与 JSON 不同的字段/属性名称?

java - 使用 VB.NET 4.5.1 客户端连接到基于 Java 的 Web 服务时出现解码错误

c# - 在 XML Web 服务中,将异常传递回客户端的最佳实践是什么?