我正在制作一个程序,它以多个文本文件的形式提取多项选择题,读取它们,然后对用户进行测验。
我将文本文件放在一个包中,并使用File
类型访问该包,然后读取目录中的所有文件,但是当我运行{{{}时,它不会读取文件1}}文件(它在测试期间工作)。然后我尝试使用.jar
,它现在可以工作,但我必须指定每个文本文件的文件名。无论如何,我可以使用InputStream来读取目录中的所有文件,还是我应该尝试一种替代解决方案?
答案 0 :(得分:2)
我相信将文件放在外部文件夹中会更容易管理,并且有些人认为在主源文件夹中包含除代码之外的文件是不好的做法。如果您担心人们打开和阅读文件,只需应用某种编码即可。以下是我访问外部文件夹的方法:
创建一个文件夹以放置所有文本文件。让我们将其命名为“questions”。此文件夹可以放在项目文件夹中,稍后只需复制并粘贴到JAR文件旁边。
在名为resources的项目中创建一个新的源(src
)文件夹,并创建一个名为“res
”的新包。在res
包中,创建一个名为ResourceLoader
的类。此类将用于通过使用用户目录(即JAR所在的文件夹)访问外部文件和文件夹。
班级:
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...
}
您的项目结构应如下所示: