我有文件“recipients.txt”,其中包含您可能已经猜到的收件人列表。我需要不时更新它,因此我计划将它与我导出的.jar文件放在同一目录中。
目前我已将它放在我的eclipse工作区中项目的“bin”目录中。我使用FileReader将文件加载到变量中。
当我尝试将其导出为“runnable jar file”时,我无法访问它。我在那里放了一个选项来显示一个JOptionPane,其中包含应用程序正在查找的路径,这很奇怪。
窗格告诉我它正在查找文件“\ Desktop \ JarFile.jarrecipients.txt”。
是的,这是正确的,缺少一个“\”。
那么我做错了什么,我该怎么做呢? 我很确定我做错了,在这种情况下我该怎么做呢?我怎么能有一个我可以定期更新的文件? 我将如何将其全部导出以使其正常工作?
代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class DeliveryPackage {
public String recipientList="No Recipients";
public String recipientFileName = "recipients.txt";
public String recipientFilePath = DeliveryPackage.class.getProtectionDomain().getCodeSource().getLocation().toString().replace("file:/","").replace("/", "\\") + recipientFileName;
public File recipientFile = new File(recipientFilePath);
public String fileNotFoundMessage = "File not found";
private String messageContents = "";
private String messageSubject = "";
public void setMessageSubject(String subject) {
messageSubject = subject;
}
public String getMessageSubject() {
return messageSubject;
}
public void setMessageContents(String message) {
messageContents = message;
}
public String getMessageContents() {
return messageContents;
}
public DeliveryPackage() {
loadRecipients();
}
public String getRecipients(){
return recipientList;
}
public String getRecipientFileName() {
return recipientFileName;
}
public File getRecipientFile(String recipientFilePath) {
File recipFile = new File(recipientFilePath);
return recipFile;
}
public String getFileNotFoundMessage() {
return "File not found";
}
public void loadRecipients() {
if(recipientFile.exists() && !recipientFile.isDirectory()) {
String recipient;
recipientList = "";
try {
FileReader fileReader = new FileReader(recipientFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((recipient = bufferedReader.readLine()) != null) {
if (recipient.trim().length() > 0) {
if (recipientList == "") {
recipientList = recipient;
} else {
recipientList = recipientList + "," + recipient;
}
}
}
// Always close files.
bufferedReader.close();
} catch (Exception e) {
}
} else {
recipientList = getFileNotFoundMessage();
}
}
}
由于
答案 0 :(得分:1)
你可以在这里阅读:How to get the path of a running JAR file?
此行返回jar文件的路径。包括罐子名称。
DeliveryPackage.class.getProtectionDomain().getCodeSource().getLocation().toString()
你应该删除它。我提到的问题显示了如何做到这一点。