我必须调用一个 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/