有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从数据库中读取文本文件。jar文件

我有一个新手问题

我目前正在编写一个程序,使用file and Scanner类从文本文件中获取大量数据,如下所示:

   File data = new File("champdata.txt");
   Scanner read = new Scanner(data);
   read.useDelimiter("%");

然后,扫描仪在IDE中正确地从文本文件中检索数据,但在我以用户身份运行程序时。jar文件,无法检索该文件

我已经读了一些关于在数据库中添加文本文件的内容。jar文件本身,并使用InputStream和BufferedReader类来读取文件,但我从未使用过这些类,也不了解它们的不同之处/如何使用它们来代替file和Scanner类

有人能帮我吗


共 (2) 个答案

  1. # 1 楼答案

    必须通过URL检索文件,因为它是一个嵌入式资源。有关更多详细信息,请参阅embedded resource Wiki

    更新

    So if I placed the text file in a folder "Resource" in the src folder, the URL I'd use is "resources/champdata.txt"

    否。如果它位于Jar中的Resource路径中,则字符串需要为:

    ..getResource("/Resource/champdata.txt");
    

    如果它位于resources路径中:

    ..getResource("/resources/champdata.txt");
    

    字符串必须是精确的字母(复数&;)案例

  2. # 2 楼答案

    Scanner类有一个构造函数^{};所以你仍然可以像以前一样使用这个类来读取数据

    您所要做的就是从Jar中读取文件,您可以这样做:

    InputStream is = getClass().getResourceAsStream("champdata.txt");
    Scanner read = new Scanner(is);
    read.useDelimiter("%");
    

    如果名为champdata.txt的文件位于jar文件的根目录(这只是一个zip文件,您可以使用任何解压来验证文件的位置)

    现在,如果希望在IDE中开发时具有相同的功能,请将该文件放在源目录中,以便在构建项目时将其放在classes文件夹中。通过这种方式,可以如上所述使用getResourceAsStream()加载文件