Java FileWriter. How do you create a folder in the same directory as your .exe file?

huangapple go评论104阅读模式
英文:

Java FileWriter. How do you create a folder in the same directory as your .exe file?

问题

  1. public void saveFile() {
  2. try {
  3. try (BufferedWriter save = new BufferedWriter(new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) {
  4. save.write(lessonPane.getText());
  5. JOptionPane.showMessageDialog(null, "File Saved!");
  6. }
  7. } catch (IOException e) {
  8. JOptionPane.showMessageDialog(null, e);
  9. }
  10. }

这是您目前的代码,目前它运行得很好。但要使其工作,您必须在项目目录中创建一个名为"Lessons"的文件夹,否则它会报告找不到位置的错误。

问题在于,我想为这个项目制作一个.exe文件和安装程序(因为这是学校项目的要求)。在构建项目并使用L4J创建.exe文件以及使用ISC创建安装程序后,它会报告目标位置(即文件夹"Lessons")无效/丢失的错误。

在尝试解决这个问题后,我认为它不再工作的原因是,我的.jar文件、.exe文件和JRE位于"dist"文件夹中(在我清理和构建项目以获取.jar文件后生成),而文件夹"Lessons"位于根目录中。

如何使文件夹在与.jar或.exe相同的位置自动生成,我不确定是否可能。是否有其他解决这个问题的方法?

非常感谢!

英文:
  1. public void saveFile() {
  2. try {
  3. try (BufferedWriter save = new BufferedWriter (new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) { // creates the file
  4. save.write(lessonPane.getText()); // saves the contents of the text pane into file
  5. JOptionPane.showMessageDialog(null, "File Saved!");
  6. }
  7. } catch (IOException e) {
  8. JOptionPane.showMessageDialog(null, e);
  9. }

this is what I currently have, and right now it's working just fine. But for this to work, I have to create a folder in the project directory or else it will throw me an error, saying the location is missing.

the problem is that I want to make an .exe file and installer for this project (because its a project requirement in school). And after I build, and make .exe using L4J, and installer using ISC, it will throw me an error saying that the target location (aka. the folder "Lessons") is invalid / missing.

after trying to solve it, I think the reason that its no longer working is because, my .jar .exe. and the JRE are in the folder "dist" (generated after I clean and build the project to get the .jar file) while the folder "Lessons" is on the root folder.

How can I make it that the folder will be automatically generated on the same location as the .jar or .exe. Honestly, I dont even know if that's possible. And is there any other way to work around this problem?

Thanks a lot!

答案1

得分: 0

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");
}

  1. try {
  2. try (BufferedWriter save = new BufferedWriter(new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) {
  3. save.write(lessonPane.getText());
  4. JOptionPane.showMessageDialog(null, "File Saved!");
  5. }
  6. } catch (IOException e) {
  7. JOptionPane.showMessageDialog(null, e);
  8. }

}
This is just silly, I just removed the slashes from the File and it worked. I don't know how or why it worked. But it worked.

英文:
  1. public void saveFile() {
  2. File fdir = new File("Lessons");
  3. if (!fdir.exists()) {
  4. if(fdir.mkdirs()){
  5. System.out.println("directory created");
  6. } else {
  7. System.out.println("folder creation failed");
  8. }
  9. } else {
  10. System.out.println("directory already exists");
  11. }
  12. try {
  13. try (BufferedWriter save = new BufferedWriter (new FileWriter("Lessons\\" + tempTextField.getText() + ".txt"))) { // creates the file
  14. save.write(lessonPane.getText()); // saves the contents
  15. JOptionPane.showMessageDialog(null, "File Saved!");
  16. }
  17. } catch (IOException e) {
  18. JOptionPane.showMessageDialog(null, e);
  19. }

this is just silly, I just removed the slashes from the File and it worked. I dont know how or why did it worked. But it worked.

huangapple
  • 本文由 发表于 2020年8月5日 11:52:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/63258177.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定