从特定包Java中读取txt文件

dex*_*vip 11 java text file package

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

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

我应该怎么做?

谢谢

Boz*_*zho 26

您可以使用

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

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


Viv*_*vek 13

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

从默认包中获取资源

// 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");
Run Code Online (Sandbox Code Playgroud)

从特定包中获取资源

// 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");
Run Code Online (Sandbox Code Playgroud)

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

YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.干杯!!


Cod*_*nci 5

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

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