gpt4 book ai didi

java - 使用 getClass().getResource 将 .txt 文件检索到 JTextArea

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

我目前正在开发一个项目,该项目显示学生可以注册的类(class) JList。

单击列表项时,将向 setTextArea() 方法传递一个变量以获取 txt 文件名。

例如,如果我单击“计算机科学”,则会传递一个 courseName 变量并将其插入到 URL 中以检索 txt 文件。

enter image description here

这工作得很好。除非我使用 JAR 文件。我知道使用 JAR 时必须使用 .getClass() 和 getResource() 来访问资源,但我似乎无法让我的工作正常工作。

这是我的原始代码

public void valueChanged(ListSelectionEvent e)
{
int selectionNum = courseList.getSelectedIndex();
String courseName;

//Switch statement to pass strings to method
switch(selectionNum)
{
case 0: courseName = "computer_science";
setTextArea(courseName);
currentCourseClicked ="0";
break;

case 1: courseName = "business";
setTextArea(courseName);
currentCourseClicked ="1";
break;

case 2: courseName = "business2";
setTextArea(courseName);
currentCourseClicked ="2";
break;

case 3: courseName = "engineering";
setTextArea(courseName);
currentCourseClicked ="3";
break;

case 4: courseName = "sport";
setTextArea(courseName);
currentCourseClicked ="4";
break;

case 5: courseName = "early";
setTextArea(courseName);
currentCourseClicked ="5";
break;

case 6: courseName = "social";
setTextArea(courseName);
currentCourseClicked ="6";
break;
}

} //End of valuesChanges Method



/**
* This method is used to read the file, with the course name passed
* from the valueChanged method.
* @param courseName
*/
@SuppressWarnings("resource")
public void setTextArea(String courseName)
{
descriptionPanel.setVisible(true);
enrol.setVisible(true);
enrol.setFont(new Font("", Font.BOLD, 20));

try
{
//This retrieves the information from a text file
FileReader file = new FileReader("./res/courseInfo/" +courseName + ".txt");
Scanner fileReaderScan = new Scanner(file);

String storeAll = "";

//while loop to read trough lines of the text file
while(fileReaderScan.hasNextLine())
{
String temp = fileReaderScan.nextLine() + "\n";
storeAll += temp;
}
descriptionTextArea.setText(storeAll);
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
} //end of setTextArea method

然后我尝试使用 getClass 和 getResource,但它不适用于 URL,并要求我将 URL 类型更改为 String。如果我这样做,那么 getClass 和 getResource 将无法工作。

enter image description here

我后来尝试使用 String urlString = url + ""; 将 url 连接到字符串,但这也不起作用。

关于如何解决这个问题有什么想法吗?

最佳答案

我猜当您的 FileReader 在 JAR 文件中时,它不起作用,因为它尝试获取当前工作目录中的文件,而不是 JAR 文件中的文件。

您必须使用此行:

FileReader f = new FileReader(new File(ClassA.class.getResource("/res/courseInfo/" +courseName + ".txt").toURI()));

我认为这应该可以解决您的问题。

<小时/>由于您正在使用 Scanner,我建议您完全删除 FileReader,并使用此行来初始化您的 Scanner 对象:

Scanner fileReaderScan = new Scanner(getClass().getResourceAsStream("/res/courseInfo/" +courseName + ".txt"));

关于java - 使用 getClass().getResource 将 .txt 文件检索到 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36475182/

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