【发布时间】:2016-12-17 18:31:52
【问题描述】:
我需要从网上下载PDF文件,例如http://www.math.uni-goettingen.de/zirkel/loesungen/blatt15/loes15.pdf这个链接。我必须使用 Streams 来完成。有了图像,我就可以正常工作:
public static void main(String[] args) {
try {
//get the url page from the arguments array
String arg = args[0];
URL url = new URL("https://cs7065.vk.me/c637923/v637923205/25608/AD8WhOSx1ic.jpg");
try{
//jpg
InputStream in = new BufferedInputStream(url.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[131072];
int n = 0;
while (-1!=(n=in.read(buf)))
{
out.write(buf, 0, n);
}
out.close();
in.close();
byte[] response = out.toByteArray();
FileOutputStream fos = new FileOutputStream("borrowed_image.jpg");
fos.write(response);
fos.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
但是对于 PDf,它不起作用。可能是什么问题?
【问题讨论】:
-
请澄清“不起作用”是什么意思。代码是否抛出异常?它是否会生成不可读的 pdf 文件?还有什么?
-
@mangotang,它正在创建一个不可读的 PDF 文件
-
我修复了您代码中的语法错误,并使用此 url 获取了示例 pdf,您的代码运行良好:pdf995.com/samples/pdf.pdf
-
清理
try-statements 后为我工作。看起来还不错,但缺少 doc cmets,没有使用try-with-resource 和过度缓冲。
标签: java pdf inputstream