私はバイト配列にpdfファイルを変換しようとしていますが、classLoaderを使用して、その変換後にclassPathリソースからファイルを取得しようとするとdosn'tは私のために働いていますそれは動作しませんバイト配列には、私はnull配列を持っていないが、配列の長さを取得することはOKではないと私はファイルとしてこのバイト配列を書くと、私は破損したファイルがあり、リソースクラスパスファイルはバイト配列に変換されません
最後のことは、(c://java//files//test.pdf)のようなパスを使用してファイルを取得しようとしているときに動作し、バイト配列の長さです。これは大丈夫です。私はちょうど入力のいくつかのファイルを持っています。取得ファイルの長さは、クラスローダを使用して、パスを使用して別のものは、まさに私のコードは、いくつかの です:
public static void main(String[] args) {
try {
// convert file to byte[]
byte[] bFile = readBytesFromFile("C:\\TEMP\\test.pdf");
byte[] bytes = readBytesFromFileResources();
System.out.println(bFile.length);//60255
System.out.println(bytes.length);//14463
}
private static byte[] readBytesFromFile(String filePath) {
FileInputStream fileInputStream = null;
byte[] bytesArray = null;
try {
File file = new File(filePath);
bytesArray = new byte[(int) file.length()];
//read file into bytes[]
fileInputStream = new FileInputStream(file);
fileInputStream.read(bytesArray);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bytesArray;
}
private static byte[] readBytesFromFileResources() {
ClassLoader classLoader = ReadFile.class.getClassLoader();
File file = new File(classLoader.getResource("test.pdf").getFile());
FileInputStream fileInputStream = null;
byte[] bytesArray = null;
try {
bytesArray = new byte[(int) file.length()];
//read file into bytes[]
fileInputStream = new FileInputStream(file);
fileInputStream.read(bytesArray);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bytesArray;
}
davidxxxは、あなたの答えのためのだと思いますが、私の必要があります私はちょうど結果を比較するためにこれを使用して –
あなたの歓迎:)私の答えは "c://java//files//test.pdf"のようなパスを使用する必要はありませんリソースフォルダ内のファイルの場所を使用する質問に答えます: "クラスパスでファイルを移動するか(意味があれば)、" – davidxxx