是否有一种方法可以使用java 1.8读取PDF文件流而不使用byte[]或readAllBytes()
我的需求是调用restapi,其o/p是pdf文件&使用基于java的脚本语言生成pdf文件。 我们在脚本中使用readAllBytes方法,因为我们不能在脚本限制中使用byte[]。下面是我们脚本的等效java代码。由于不建议使用readAllBytes方法读取大数据流,是否有不使用byte[]的替代方法 请注意:我们使用的是1.8Java,不能使用除Apache Commons IO之外的任何第三方库 谢谢你的帮助是否有一种方法可以使用java 1.8读取PDF文件流而不使用byte[]或readAllBytes(),java,rest,fileinputstream,Java,Rest,Fileinputstream,我的需求是调用restapi,其o/p是pdf文件&使用基于java的脚本语言生成pdf文件。 我们在脚本中使用readAllBytes方法,因为我们不能在脚本限制中使用byte[]。下面是我们脚本的等效java代码。由于不建议使用readAllBytes方法读取大数据流,是否有不使用byte[]的替代方法 请注意:我们使用的是1.8Java,不能使用除Apache Commons IO之外的任何第三方库 谢谢你的帮助 import java.io.BufferedInputStream; i
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class ExecuteReportFromScript {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
byte[] buffer = new byte[1024];
URL url = new URL("restEndPoint");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Cookie", "myCookieData");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
con.connect();
System.out.println("Response Code:" + con.getResponseCode());
InputStream ip = con.getInputStream();
BufferedInputStream is = new BufferedInputStream(ip);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write( is.readAllBytes());
/*
* int length; while ((length = is.read(buffer)) > -1 ) { bos.write(buffer, 0,
* length); }
*/
bos.flush();
File file = new File("PathToFile\\FileName.pdf");
try(BufferedOutputStream salida = new BufferedOutputStream(new FileOutputStream(file))){
salida.write(bos.toByteArray());
salida.flush();
}
ip.close();
is.close();
bos.close();
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
使用自Java 7将流直接写入文件 路径文件=路径.getPathToFile\\FileName.pdf; 在=new BufferedInputStreamcon.getInputStream中尝试InputStream{ Files.copyin,文件; }
脱离主题,但您必须接受:application/json。然后将响应写成PDF。这里有点不对劲是的,它能工作,我也能把PDF写进目录。我在Postman和其他rest客户端中使用相同的方法,并以o/p的形式获取PDF。因此,我假设应用程序是其他类型的,这意味着服务器要么是BGGY,要么根本不考虑接受头。谢谢您的响应。如果数据量很大,比如200多页的pdf,我可以使用它而不存在任何性能问题吗?有什么想法吗?@Sravan复制方法创建一个8k字节[],并执行正常的读/写循环。应该没有性能问题。