Почему я не могу записать файл в тесте junit?

У меня есть каталог с некоторыми файлами в нем.

У меня есть набор тестов junit, который тестирует некоторые операции, которые записывают, редактируют и удаляют эти файлы.

Я хочу сохранить содержимое файлов перед запуском тестов и восстановить их после.

Я пытаюсь сделать это, скопировав файлы в другой каталог перед запуском тестов и скопировав их обратно после.

поэтому у меня есть следующий код в тестовом методе @beforeClass:

File repDir = new File("/home/hamster339/Documents/Projects/Piping_Tune_List/Repertoire");
    if (repDir.exists()){
        for (File f: Objects.requireNonNull(repDir.listFiles())) {
            Scanner r = new Scanner(f);
            FileWriter w = new FileWriter(String.format("/home/hamster339/Documents/Projects/Piping_Tune_List/temp/%s",f.getName()));
            while (r.hasNextLine()){
                w.write(r.nextLine());
            }
            w.close();
            r.close();
        }
    }

Однако это дает мне следующую ошибку:

java.io.FileNotFoundException: /home/hamster339/Documents/Projects/Piping_Tune_List/temp/Learnt.prl (No such file or directory)

Насколько я понимаю, эта ошибка указывает на то, что у меня нет разрешения на запись. .write() должен создать новый файл, если он еще не существует.

использование File.canwrite() подтверждает это, возвращая false.

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

поэтому мой вопрос: почему я не могу писать в файлы в тестах, когда в основном коде все работает нормально?

Вы уверены, что родительская папка для этого файла существует?

talex 02.10.2022 17:14

@talex О да, кажется, это сработало. благодарю вас! Я думал, что он тоже создал каталог, если он не существует, не знаю, откуда я это взял

Hamster339 02.10.2022 17:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме