Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以使用java 1.8读取PDF文件流而不使用byte[]或readAllBytes()_Java_Rest_Fileinputstream - Fatal编程技术网

是否有一种方法可以使用java 1.8读取PDF文件流而不使用byte[]或readAllBytes()

是否有一种方法可以使用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

我的需求是调用restapi,其o/p是pdf文件&使用基于java的脚本语言生成pdf文件。 我们在脚本中使用readAllBytes方法,因为我们不能在脚本限制中使用byte[]。下面是我们脚本的等效java代码。由于不建议使用readAllBytes方法读取大数据流,是否有不使用byte[]的替代方法

请注意:我们使用的是1.8Java,不能使用除Apache Commons IO之外的任何第三方库

谢谢你的帮助


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字节[],并执行正常的读/写循环。应该没有性能问题。