Java 从资源文件夹读取conf文件时出现意外结果
我有以下java代码,它从资源文件夹中读取Java 从资源文件夹读取conf文件时出现意外结果,java,Java,我有以下java代码,它从资源文件夹中读取config.properties import java.io.InputStream; import java.util.Properties; public class TestProperties { static ClassLoader classloader = Thread.currentThread().getContextClassLoader(); static InputStrea
config.properties
import java.io.InputStream;
import java.util.Properties;
public class TestProperties {
static ClassLoader classloader = Thread.currentThread().getContextClassLoader();
static InputStream input = classloader.getResourceAsStream("config.properties");
public static void main(String[] args) throws InterruptedException {
while (true) {
new TestProperties().readPropertiesFile();
Thread.sleep(2000);
}
}
private void readPropertiesFile() {
Properties properties = new Properties();
try {
properties.load(input);
int threads = Integer.parseInt(properties.getProperty("num_of_workers"));
System.out.println("num_of_workers: " + threads);
} catch (Exception e) {
System.out.println("hey something went wrong: " + e.getMessage());
}
}
}
结果:
- 工人数量:2
- 嘿,出了点问题:空
- 嘿,出了点问题:空
- 嘿,出了点问题:空
num\u of\u worker:2
),但之后它给空值
但当我改变
到静态类加载器类加载器
类加载器类加载器
到静态输入流输入
输入流输入
- 工人数量:2
- 工人数量:2
- 工人数量:2
- 工人数量:2
您能解释一下这种行为吗?因为输入流只能使用一次,
在静态情况下,它只初始化一次,并且在第一次迭代中使用,但在非静态情况下,每次创建一个新实例时,它总是创建为新的。consumed?它是否像队列一样工作(即,在使用它之后被删除),而不是像您在第一次迭代中使用它的队列管理员一样工作。一旦你使用了它,你就不能再简单地使用它了。如果您想再次阅读它,您需要重置它。您的意思是我们只能使用输入流一次暗示我们只能使用输入流一次,但如果您使用的是标记和重置方法,您可以重用它,但并非所有输入流都支持标记方法