首页 > 解决方案 > Java 文件编写器。如何在与 .exe 文件相同的目录中创建文件夹?

问题描述

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 文件和安装程序(因为它是学校的项目要求)。在我使用 L4J 构建并制作 .exe 并使用 ISC 安装程序之后,它会向我抛出一个错误,指出目标位置(又名文件夹“Lessons”)无效/丢失。

在尝试解决它之后,我认为它不再工作的原因是因为,我的 .jar .exe。并且 JRE 位于文件夹“dist”中(在我清理并构建项目以获取 .jar 文件后生成),而文件夹“Lessons”位于根文件夹中。

我怎样才能使文件夹自动生成在与 .jar 或 .exe 相同的位置。老实说,我什至不知道这是否可能。还有其他方法可以解决这个问题吗?

非常感谢!

标签: javainno-setupfilewriterlaunch4j

解决方案


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,它就起作用了。我不知道它是如何或为什么起作用的。但它奏效了。


推荐阅读