我试图读取特定包中的文本文件,但它返回无法找到。我可以读取它插入绝对路径,但我想读取它而不插入绝对路径。从特定的包中读取txt文件Java
String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);
我该怎么办?
感谢
我试图读取特定包中的文本文件,但它返回无法找到。我可以读取它插入绝对路径,但我想读取它而不插入绝对路径。从特定的包中读取txt文件Java
String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);
我该怎么办?
感谢
您可以使用
InputStream in =
getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt");
Reader fr = new InputStreamReader(in, "utf-8");
几个图片的标题说明:不要在包名称中使用大写字母;使用你的变量的英文名称。这些都是公认的做法和惯例。
如果文本文件与您的类文件存在于相同的结构中,那么您可能更适合使用getResourceAsStream。
对于总的可移植性,可以考虑在地方使用文件分割符的正斜杠,但是,是的getResourceAsStream应该工作。请记住,如果你在eclipse中工作,你的类文件可能与你的工作目录相关,所以如果它只是在你的项目文件夹中,你应该有它的工作方式,而不是getResourceAsStream。或者,如果您要访问的资源位于源文件夹中,则每当您清理项目时都会将其复制到bin中,以便getResourceAsStream可以正常工作。
这可能有点晚,但这可能有助于其他许多人。这些方法访问现有的资源,在项目
获取资源形成默认的包从特定的软件包
// 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");
注意
// 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");
获取资源:的getclass( )是一个非静态函数,不能从静态上下文中调用。如果你想从静态环境呼叫使用
YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile()
希望这会有所帮助。干杯!!
你是什么意思,“在一个特定的包装”?哪个包? – skaffman 2010-12-05 21:36:01
这看起来像是复制到以下问题: http://stackoverflow.com/questions/4359876/how-to-load-reference-a-file-as-a-file-instance-from-the-classpath – 2010-12-05 22:06:09