【发布时间】:2021-10-01 17:13:26
【问题描述】:
按照我在How to have my java project to use some files without using their absolute path? 之前提出的问题,我找到了解决方案,但是在创建我想要写入的文本文件时又出现了另一个问题。这是我的代码:
private String pathProvider() throws Exception {
//finding the location where the jar file has been located
String jarPath=URLDecoder.decode(getClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
//creating the full and final path
String completePath=jarPath.substring(0,jarPath.lastIndexOf("/"))+File.separator+"Records.txt";
return completePath;
}
public void writeRecord() {
try(Formatter writer=new Formatter(new FileWriter(new File(pathProvider()),true))) {
writer.format("%s %s %s %s %s %s %s %s %n", whichIsChecked(),nameInput.getText(),lastNameInput.getText()
,idInput.getText(),fieldOfStudyInput.getText(),date.getSelectedItem().toString()
,month.getSelectedItem().toString(),year.getSelectedItem().toString());
successful();
} catch (Exception e) {
failure();
}
}
这可以在运行 jar 文件的任何地方创建文本文件,但我的问题是,当信息写入文件时,数字、符号和英文字符仍然存在,但波斯语中的其他字符是变成了问号。喜欢: ????? 111 ???? ????.虽然在eclipse中运行应用程序不会产生这个问题,但运行jar会。 注意:我在某些人的问题中找到了 pathProvider 方法内的代码。
【问题讨论】:
-
您无法写入资源。它们是只读的。您可以写入文件系统中的文件。将它们从用户的主目录中删除
-
您需要将您正在运行的代码放入您的问题中。
-
@tgdavies 这段代码导致问题不是程序的其余部分。
-
正如@rzwitserloot 在他的回答中所说,如果您的问题是文件中写入了哪些字符,那么您为什么认为创建路径的方式是问题所在?
-
@tgdavies 我不知道,我也不确定,但是使用绝对路径一切正常,我想也许是我传递的编码导致了问号,但似乎不是。跨度>
标签: java file jar io absolute-path