resource classPath文件转换为字节数组不起作用

时间:2017-01-22 10:18:48

标签: java file classloader resteasy

大家好我试图将pdf文件转换为字节数组,但是当我尝试使用classLoader从classPath资源获取文件并且之后将其转换为字节数组时它不会对我有效#&# 39;工作我没有一个空数组,但得到的数组长度不好,当我把这个字节数组写成文件时,我有一个损坏的文件,我无法打开它

当我尝试使用类似(c://java//files//test.pdf)这样的路径获取文件时,它的工作和字节数组的长度是正常的,当时我把数组写成一个文件,我在输入中有一些文件。使用classLoader和使用路径获取文件长度的另一件事就是一些 我的代码是:

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;

    }

1 个答案:

答案 0 :(得分:0)

  

当我尝试使用类似路径获取文件时的最后一件事   (c://java//files//test.pdf)它的工作和字节数组长度没问题   当我将数组写为文件时,我确实有一些文件   输入

c://java//files//test.pdf可能不在类路径中 因此,您无法使用类加载器加载文件,因为类加载器将无法找到它。

要么在类路径中移动文件(如果有意义的话),要么在写入问题时以文件系统相关的方式加载文件:

File file = new file("c://java//files//test.pdf)";