gpt4 book ai didi

Java - 如何使 .jar 文件使用外部 .txt 文件?

转载 作者:行者123 更新时间:2023-12-02 11:12:40 26 4
gpt4 key购买 nike

我有文件“recipients.txt”,其中包含您可能已经猜到的收件人列表。我需要不时更新它,因此我计划将其与我导出的 .jar 文件放在同一目录中。

目前,我将它放在 Eclipse 工作区中项目的“bin”目录中。我使用 FileReader 将文件加载到变量中。

当我尝试将其导出为“可运行的 jar 文件”时,我无法访问它。我在那里放置了一个选项来显示 JOptionPane 以及应用程序正在查找的路径,这很奇怪。

该 Pane 告诉我它正在寻找文件“\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();
}
}
}

谢谢

最佳答案

您可以在此处阅读:How to get the path of a running JAR file?

该行返回 jar 文件的路径。包括 jar 名称。

DeliveryPackage.class.getProtectionDomain().getCodeSource().getLocation().toString()

你应该删除它。我提到的问题展示了如何做到这一点。

关于Java - 如何使 .jar 文件使用外部 .txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com