PDF到java中的Bytearray转换

时间:2013-04-30 17:27:10

标签: java pdf bytearray inputstream

下面是我将PDF文件转换为字节数组的代码

public class ByteArrayExample{
public static void main(String[] args) {
    try{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter File name: ");
        String str = bf.readLine();
        File file = new File(str); 
        //File length
        int size = (int)file.length(); 
        if (size > Integer.MAX_VALUE){
            System.out.println("File is to larger");
        }
        byte[] bytes = new byte[size]; 
        DataInputStream dis = new DataInputStream(new FileInputStream(file)); 
        int read = 0;
        int numRead = 0;
        while (read < bytes.length && (numRead=dis.read(bytes, read,
                bytes.length-read)) >= 0) {
            read = read + numRead;
        }
        System.out.println("File size: " + read);
        // Ensure all the bytes have been read in
        if (read < bytes.length) {
            System.out.println("Could not completely read: "+file.getName());
        }
    }
  catch (Exception e){
  e.getMessage();
  }
  }
}

问题是这实际上是将文件名转换为字节数组而不是实际的PDF文件。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

我把它添加到最后检查它并复制了PDF文件。您的代码工作正常

        dis.close();

        DataOutputStream out = new DataOutputStream(new FileOutputStream(new File("c:\\out.pdf")));
        out.write(bytes);
        out.close();
        System.out.println("File size: " + read);
        // Ensure all the bytes have been read in
        if (read < bytes.length) {
            System.out.println("Could not completely read: "+file.getName());
        }

编辑:这是我的整个代码,它只是从你的代码中复制而来。我在IDE(eclipse)中运行它并为输入输入“c:\ mypdf.pdf”并将其复制到out.pdf。相同的副本。请注意,我确实关闭了两个流,我注意到您忘记在代码中执行此操作。

public class Main {

public static void main(String[] args) {
    try {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter File name: ");
        String str = bf.readLine();
        File file = new File(str);
        //File length
        int size = (int) file.length();
        if (size > Integer.MAX_VALUE) {
            System.out.println("File is to larger");
        }
        byte[] bytes = new byte[size];
        DataInputStream dis = new DataInputStream(new FileInputStream(file));
        int read = 0;
        int numRead = 0;
        while (read < bytes.length && (numRead = dis.read(bytes, read,
                bytes.length - read)) >= 0) {
            read = read + numRead;
        }
        dis.close();

        DataOutputStream out = new DataOutputStream(new FileOutputStream(new File("c:\\out.pdf")));
        out.write(bytes);
        out.close();
        System.out.println("File size: " + read);

        // Ensure all the bytes have been read in
        if (read < bytes.length) {
            System.out.println("Could not completely read: " + file.getName());
        }
    } catch (Exception e) {
        e.getMessage();
    }
}

}