从特定包Java读取文本文件

时间:2010-12-05 21:32:43

标签: java file text package

我正在尝试读取特定包中的文本文件,但它返回无法找到。我可以读取它插入绝对路径但我想在不插入绝对路径的情况下读取它。

String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);

我该怎么办?

由于

4 个答案:

答案 0 :(得分:26)

您可以使用

InputStream in = 
   getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt");
Reader fr = new InputStreamReader(in, "utf-8");

一些旁注:不要在包名中使用大写字母;使用变量的英文名称。这些是公认的做法和惯例。

答案 1 :(得分:12)

可能还有点晚,这可以帮助其他许多人。这些是访问项目中可用资源的方法

从默认包中获取资源

// Getting Resource as file object
File f = new File(getClass().getResource("/excludedir.properties").getFile());

// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/excludedir.properties");

从特定软件包获取资源

// Getting Resource as file object
File f = new File(getClass().getResource("/com/vivek/core/excludedir.properties").getFile());

// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/com/vivek/core/excludedir.properties");

注意: getclass()是一个非静态函数,不能从静态上下文中调用。如果要从静态上下文中调用

YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile()

希望这会有所帮助。干杯!!

答案 2 :(得分:5)

如果文本文件与您的类文件存在于同一结构中,那么您可能更适合使用getResourceAsStream。

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)

答案 3 :(得分:0)

为了完全可移植性,请考虑使用File.separator代替正斜杠,但是getResourceAsStream应该可以使用。请记住,如果你在eclipse中工作,你的类文件可能会在你的工作目录中的bin中,所以如果它只在你的项目文件夹中,你应该使用它的方式,但不是getResourceAsStream。或者,如果您要访问的资源位于源文件夹中,则只要清理项目,它就会被复制到bin中,因此getResourceAsStream将起作用。