Java FileNotFoundException при попытке передать текстовый файл в POST и преобразовать содержимое в список <Integer> - PullRequest
0 голосов
/ 27 февраля 2019

Я использую Java 8 и Apache HttpClient для создания веб-службы RESTful, которая передает имя файла в качестве тела сообщения.Я пытаюсь проанализировать данные из текстового файла и добавить его в список.Кажется, все работает, кроме того, что я получаю: Error Parsing: java.io.FileNotFoundException: testFile.txt (No such file or directory).

Это код конечной точки службы:

@POST
@Path("/fileUpload")
@Consumes(MediaType.TEXT_PLAIN)
public Response fileUpload(String fileName) {

    StringBuilder builder = new StringBuilder();

    try {
        List<String> items = new ArrayList<String>();
        Scanner sc = new Scanner(new File(fileName));
        while (sc.hasNext()) {
            String line = sc.nextLine();
            System.out.println(line);

            items = Arrays.asList(line.split("\n"));
        }
        List<Integer> itemNbrs = new ArrayList<>();

        for (String string : items) {
            itemNbrs.add(Integer.valueOf(string));
        }
        sc.close();

        itemNbrs.forEach(System.out::println);

        // processImpl.checkItemsAndInsertIntoTable(itemNbrs);

    } catch (Exception e) {
        System.out.println("Error Parsing: " + e);
    }
    System.out.println("Data Received: " + builder.toString());

    // return HTTP response 200 in case of success
    return Response.status(200).entity(builder.toString()).build();
}

Тестовый файл:

123
2345
4567
74543
9875

IЯ попытался передать имя файла как InputStream, и я получил то же исключение.Я также изменил права доступа к тестовому файлу, используя chmod 777.

Stack Trace:

Error Parsing: java.io.FileNotFoundException: fileTest.txt
(No such file or directory)
Data Received: 

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Опираясь на ответ RobOhRob, я понял это.Как только я нажал на сервисе System.out.println(new File( fileName).getAbsolutePath()); в начале метода, он записал абсолютный путь как /Applications/Eclipse.app/Contents/MacOS/fileTest.txt.

. Я поместил файл в этот каталог и передал абсолютный путь как тело сообщения.Если вы делаете это, убедитесь, что вы убегаете от слеша!Абсолютный путь, используемый в теле сообщения службы, выглядит следующим образом:

//Applications//Eclipse.app//Contents//MacOS//fileTest.txt

0 голосов
/ 27 февраля 2019

Попробуйте добавить это в начале вашей конечной точки.

System.out.println(new File( fileName).getAbsolutePath());

Таким образом, вы можете увидеть, где вы ищете указанный файл, и отрегулировать его оттуда.

...