java - 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 相同的位置。老实说,我什至不知道这是否可能。还有其他方法可以解决这个问题吗?
非常感谢!
解决方案
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
,它就起作用了。我不知道它是如何或为什么起作用的。但它奏效了。
推荐阅读
- batch-file - 调度一个使用 rclone 的 bat 文件
- json - 将 My.Resources 中的 JSON 读入 String 会将“vbCrLf”添加到我的字符串中,但无法读入 JObject
- user-agent - 从 Roku 用户代理中识别 4k 功能
- android - 无法在 adb shell getevent 上获得鼠标点击坐标
- vba - 6 位(或 5 位)编码和解码到/从字符串打包成 128 位伪 GUID
- python - 所有评论都链接到所有帖子
- sql - 等效于在 PostgreSQL 中为 bytea 转换 varbinary
- xmpp - 使用 Ejabberd REST API 时创建房间失败
- plugins - 使用 Minecraft 插件语言 Skript,我如何找到玩家的维度(例如“下界”)?
- cypress - Cypress 中的测试重定向如何使用 window.open 实现