-1

以下は、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 ファイルではなくバイト配列に変換することです。

4

1 に答える 1

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();
    }
}

}

于 2013-04-30T17:35:50.430 に答える