我想从包内读取.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文件。 谢谢你的帮助。
答案 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