我应该如何将文本文件存储在 Java 程序中以便于阅读?
How should I store text files in a Java program to easily read them?
我正在制作一个程序,它以多个文本文件的形式接受多项选择题,阅读它们,然后对用户进行测验。
我把文本文件放在一个包里,用File
类型访问包,然后读取目录下的所有文件,但是当我运行 .jar
文件(它在测试期间有效)。然后我尝试使用 InputStream
并且它现在可以工作了,但是我必须指定每个文本文件的文件名。无论如何我可以使用 InputStream 读取目录中的所有文件,或者我应该尝试替代解决方案吗?
我相信将文件放在外部文件夹中会更容易管理,而且有些人认为将代码以外的文件放在其主源文件夹中是不好的做法。如果您担心人们打开和阅读文件,只需应用某种编码即可。以下是我将如何访问外部文件夹:
创建一个文件夹来放置所有文本文件。我们将其命名为 "questions"。此文件夹可以放在您的项目文件夹中,稍后只需复制并粘贴到 JAR 文件旁边即可。
在您的项目中创建一个名为 resources 的新源 (src
) 文件夹,并创建一个名为“res
”的新包。在 res
包中,创建一个名为 ResourceLoader
的 class。 class 将用于通过用户目录访问外部文件和文件夹,即 JAR 所在的文件夹。
class:
public class ResourceLoader {
private static final String QUESTION_FOLDERNAME = "questions";
/**
* Returns the folder containing all the questions
*
*/
public static File getQuestionsFolder(){
String userDirectory = System.getProperty("user.dir");
System.out.println(userDirectory+"\"+QUESTION_FOLDERNAME);
return new File(userDirectory+"\"+QUESTION_FOLDERNAME);
}
}
现在您可以访问此文件夹并阅读如下内容:
File folder = ResourceLoader.getQuestionsFolder();
for(File f : folder.listFiles()){
// Read the text file...
}
您的项目结构应如下所示:
我正在制作一个程序,它以多个文本文件的形式接受多项选择题,阅读它们,然后对用户进行测验。
我把文本文件放在一个包里,用File
类型访问包,然后读取目录下的所有文件,但是当我运行 .jar
文件(它在测试期间有效)。然后我尝试使用 InputStream
并且它现在可以工作了,但是我必须指定每个文本文件的文件名。无论如何我可以使用 InputStream 读取目录中的所有文件,或者我应该尝试替代解决方案吗?
我相信将文件放在外部文件夹中会更容易管理,而且有些人认为将代码以外的文件放在其主源文件夹中是不好的做法。如果您担心人们打开和阅读文件,只需应用某种编码即可。以下是我将如何访问外部文件夹:
创建一个文件夹来放置所有文本文件。我们将其命名为 "questions"。此文件夹可以放在您的项目文件夹中,稍后只需复制并粘贴到 JAR 文件旁边即可。
在您的项目中创建一个名为 resources 的新源 (
src
) 文件夹,并创建一个名为“res
”的新包。在res
包中,创建一个名为ResourceLoader
的 class。 class 将用于通过用户目录访问外部文件和文件夹,即 JAR 所在的文件夹。
class:
public class ResourceLoader {
private static final String QUESTION_FOLDERNAME = "questions";
/**
* Returns the folder containing all the questions
*
*/
public static File getQuestionsFolder(){
String userDirectory = System.getProperty("user.dir");
System.out.println(userDirectory+"\"+QUESTION_FOLDERNAME);
return new File(userDirectory+"\"+QUESTION_FOLDERNAME);
}
}
现在您可以访问此文件夹并阅读如下内容:
File folder = ResourceLoader.getQuestionsFolder();
for(File f : folder.listFiles()){
// Read the text file...
}
您的项目结构应如下所示: