Java FileWriter. Как создать папку в том же каталоге, что и ваш EXE-файл? - PullRequest
0 голосов
/ 05 августа 2020
public void saveFile() {
        
         try {
             try (BufferedWriter save = new BufferedWriter (new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) { // creates the file
                 save.write(lessonPane.getText()); // saves the contents of the text pane into file
                 JOptionPane.showMessageDialog(null, "File Saved!");
             }
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, e);
        }

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

проблема в том, что я хочу создать файл. exe-файл и установщик для этого проекта (потому что это требование проекта в школе). И после того, как я построю и сделаю .exe с использованием L4J и установщика с использованием IS C, он выдаст мне сообщение об ошибке, в котором говорится, что целевое местоположение (также известная как папка «Уроки») недействительно / отсутствует.

после попытки решить эту проблему, я думаю, причина того, что он больше не работает, в том, что мой .jar .exe. и JRE находятся в папке «dist» (сгенерированной после очистки и сборки проекта для получения файла .jar), а папка «Уроки» находится в папке root.

Как Могу ли я сделать так, чтобы папка автоматически создавалась в том же месте, что и .jar или .exe . Честно говоря, я даже не знаю, возможно ли это. И есть ли другой способ обойти эту проблему?

Большое спасибо!

1 Ответ

0 голосов
/ 05 августа 2020
public void saveFile() {
        
        File fdir = new File("Lessons");
        if (!fdir.exists()) {
            if(fdir.mkdirs()){
                System.out.println("directory created");
            } else {
                System.out.println("folder creation failed");
            }
        } else {
            System.out.println("directory already exists");
        }
        
         try {
             try (BufferedWriter save = new BufferedWriter (new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) { // creates the file
                 save.write(lessonPane.getText()); // saves the contents
                 JOptionPane.showMessageDialog(null, "File Saved!");
             } 
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, e);
        }

это просто глупо, я просто убрал косые черты с File, и это сработало. Я не знаю, как и почему это сработало. Но это сработало.

...