读取包中的.txt文件

时间:2014-01-12 01:23:06

标签: java file-io

我想从包内读取.txt文件。要直接从它所在的计算机上的文件所在位置读取它,但是从包中它不会。我之前使用过类加载器,但如果这就是答案,我不太清楚如何使用它们。 这将打开文件并逐行读取。

ReadTextFile.class

    public void readFile(String fileLocation){

try{
      FileInputStream fstream = new FileInputStream(fileLocation);
      DataInputStream in = new DataInputStream(fstream);
      BufferedReader br = new BufferedReader(new InputStreamReader(in));
      String strLine;
      //Read File Line By Line
      while ((strLine = br.readLine()) != null)   {
}
catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
      }
}
}

这是在我的另一个课程中说出要阅读的文件。

    ReadTextFile textFile;
    textFile = new ReadTextFile();
    textFile.readFile("src/com/game/level_" + level + ".txt");

如果我在eclipse之外将其作为jar文件运行,我会收到此错误。

Error: src\com\game\level_1.txt (The system cannot find the path specified)

我的所有类都在彼此相同的包中,因此是.txt文件。 如何从包中读取.txt文件。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这应该有效:

package com.game;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class MyClass {

    public static void main(String... args) throws IOException {
        new MyClass().readLevel(1);
    }

    private void readLevel(int i) throws IOException {
        try (InputStream is = getClass().getClassLoader()
                .getResourceAsStream("com/game/level_" + i + ".txt");
                BufferedReader br = 
                new BufferedReader(new InputStreamReader(is))) {
            String line;
            while(null != (line = br.readLine())) {
                System.out.println(line);
            }
        }
    } 
}

输出是(示例文本内容)

level 1
hello

如果没有,请提供Minimal, Complete, and Tested Code Sample