从特定包 Java 读取 txt 文件

2022-09-02 23:07:04

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

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

我该怎么办?

谢谢


答案 1

您可以使用

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

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


答案 2

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

从默认包中获取资源

// 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()

希望这有帮助。干杯!!