当前位置: 代码迷 >> J2SE >> 解析pdf文件后又写入,为什么没有数据
  详细解决方案

解析pdf文件后又写入,为什么没有数据

热度:14   发布时间:2016-04-23 19:57:07.0
解析pdf文件后再写入,为什么没有数据?
大家好,我把本地的pdf文件解析后再写入一个新文件,打开生成后的pdf提示“Adobe Reader 无法打开‘123.pdf’,因为不支持此文件类型或者文件已损坏(例如,文件被作为电子邮件附件发送单没有正确地解码)”。代码如下,请问哪里的问题,怎么解决?
public String printProposal(HttpServletRequest request,HttpServletResponse response) throws Exception {

String path = "D:\\文档\\国泰相关\\printdata.pdf";
File file = new File(path);
if(file.exists()){
System.out.println("******");
byte[] arr = null; 
arr = getByte(file);
File file1 = new File("D:\\123.pdf");
FileOutputStream out = new FileOutputStream(file);
if(!file1.exists()){
file1.createNewFile();
}
out.write(arr);
out.flush();
out.close();
String forward = "printProposal";
return forward;
}
return "error";
}

public static byte[] getByte(File file) throws Exception {   
       byte[] bytes = null;   
        if (file != null) {   
            InputStream is = new FileInputStream(file);   
            int length = (int) file.length();   
            if (length > Integer.MAX_VALUE) // 当文件的长度超过了int的最大值   
            {   
                System.out.println("this file is max ");   
                return null;   
            }   
            bytes = new byte[length];   
            int offset = 0;   
            int numRead = 0;   
            while (offset < bytes.length   && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {   
                offset += numRead;   
            }   
            // 如果得到的字节长度和file实际的长度不一致就可能出错了   
            if (offset < bytes.length) {   
                System.out.println("file length is error");   
                return null;   
            }   
            is.close();   
        }   
        return bytes;   
    } 

------解决思路----------------------
 FileOutputStream out = new FileOutputStream(file);
file改file1
好吧,你输出到输入文件里了,file1大小为0...
  相关解决方案