java.io.IOException java - PullRequest
       23

java.io.IOException java

0 голосов
/ 04 июня 2018

Мы пытаемся получить байты из файла, используя приведенный ниже код.

getBytes("/home/1.ks");

Перед этим мы должны убедиться, что файл существует.

public static void getBytes(final String resource) throws IOException {

        File file = new File(resource);
        if (file.exists()) {
            System.out.println("exists");
        } else {
            System.out.println("not exists");
        }

        final InputStream input = APIController.class.getResourceAsStream(resource);
        if (input == null) {
            throw new IOException(resource);
        } else {
            System.out.println("Not null");
        }
    }

Здесь вывод и исключения

exists
java.io.IOException: /home/1.ks
    at com.example.demo.controller.APIController.getBytes(APIController.java:164)
    at com.example.demo.controller.APIController.transactionSale(APIController.java:89)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)

1 Ответ

0 голосов
/ 04 июня 2018

Измените вашу строку на:

final InputStream input = new FileInputStream(resource);

Пока вы это делаете, измените имя параметра resource на path или filePath, поскольку это действительно так.

Два понятия (файл и ресурс) связаны, но не одинаковы.Ресурсом может быть файл на диске, но это также может быть файл внутри jar-файла или ресурс, загруженный с удаленного URL-адреса (используется не часто, но возможно).

Так как в вашем случае, вы знаете, что хотите получить доступ к файлу на диске, вам нужно использовать FileInputStream.

См. также В чем разница между ресурсом, URI, URL, путем и файлом вJava? для более глубокого объяснения различий между файлами, ресурсами и связанными понятиями.

...