файл не найден по пути "" src / test / resources / " - PullRequest
0 голосов
/ 25 апреля 2018

мой тестовый код Java пытается получить доступ к файлу в папках моего проекта

но я получаю исключение ввода-вывода:

   String fileContents = new String(Files.readAllBytes(
            Paths.get("src/test/resources/SenegalAndBulgariaConfig.txt")));


   String fileContents = new String(Files.readAllBytes(
            Paths.get("src/")));

Раньше работал, но больше нет:

java.nio.file.NoSuchFileException: src/test/resources/SenegalAndBulgariaConfig.txt

    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
    at java.nio.file.Files.newByteChannel(Files.java:361)
    at java.nio.file.Files.newByteChannel(Files.java:407)
    at java.nio.file.Files.readAllBytes(Files.java:3152)

хотя оно существует:

enter image description here

Ответы [ 5 ]

0 голосов
/ 25 апреля 2018
private String readFileContent(String filePath) throws URISyntaxException, IOException {
    byte[] bytes = Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource(filePath).toURI()));
    return new String(bytes);
}

в вашем случае filePath будет SenegalAndBulgariaConfig.txt.

, например:

String senegalAndBulgariaConfig = readFileContent("SenegalAndBulgariaConfig.txt");
0 голосов
/ 25 апреля 2018

Следующее должно работать, предполагая, что SenegalAndBulgariaConfig.txt находится в /resources:

    InputStream is = getClass().getResourceAsStream("/SenegalAndBulgariaConfig.txt");
    StringWriter writer = new StringWriter();
    IOUtils.copy(is, writer, Charset.defaultCharset());
    String fileContents = writer.toString();
    System.out.println(fileContents );

ПРИМЕЧАНИЕ getClass() можно заменить на ClassName.class

0 голосов
/ 25 апреля 2018

Вы никогда не должны зависеть от File. Загрузить InputStream из classpath.

Как src / main / resources, так и src / test / resources находятся в пути к классам, если вы используете стандартную структуру каталогов Maven.

Мне нравятся библиотека ввода-вывода Apache Commons и Spring ClassPathResource.

0 голосов
/ 25 апреля 2018

Часто возникает путаница между загрузкой файлов в качестве ресурсов (через classpath) или обращением к нему непосредственно на диске. Возможно, мой ответ здесь может помочь вам различить оба.

0 голосов
/ 25 апреля 2018

Я думаю, вам следует удалить "src" из файла Contents String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...