我应该如何在Java程序中存储文本文件以便轻松读取它们?

问题描述 投票:2回答:1

我正在制作一个程序,它以多个文本文件的形式提取多项选择题,读取它们,然后对用户进行测验。

我把文本文件放在一个包中,并使用File类型来访问包,然后读取目录中的所有文件,但是当我运行.jar文件时它不会读取文件(它在测试期间工作)。然后我尝试使用InputStream,它现在可以工作,但我必须指定每个文本文件的文件名。无论如何我可以使用InputStream来读取目录中的所有文件,或者我应该尝试一个替代解决方案吗?

java inputstream
1个回答
2
投票

我相信将文件放在外部文件夹中会更容易管理,并且有些人认为在主源文件夹中包含除代码之外的文件是不好的做法。如果您担心人们打开和阅读文件,只需应用某种编码即可。以下是我访问外部文件夹的方法:

  1. 创建一个文件夹以放置所有文本文件。让我们将其命名为“questions”。此文件夹可以放在项目文件夹中,稍后只需复制并粘贴到JAR文件旁边即可。
  2. 在名为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...

}

您的项目结构应如下所示:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.