我試圖從.yaml
文件中加載數據,其中我保留了兩臺機器的IP地址和端口。我.yaml
文件如下:Java:解析.yaml文件[如果可能,使用snake.yaml]
config.yaml
ip_addresses :
firstMachineAddress : '162.242.195.82'
secondMachineAddress : '50.31.209.229'
ports :
firstTargetPort : '4041'
secondTargetPort : '5051'
而且我把這個項目文件夾下(不是在同一個包與類),在這裏我想從加載。但是,無論我迄今爲止嘗試過的都行不通。
最後,我把配置文件src/main/resources
下,並試圖此:
private void loadFromFile() throws FileNotFoundException {
Yaml yaml = new Yaml();
ArrayList<String> key = new ArrayList<String>();
ArrayList<String> value = new ArrayList<String>();
try {
InputStream ios = getClass().getResourceAsStream("/config.yaml");
// Parse the YAML file and return the output as a series of Maps and Lists
Map<String, Object> result = (Map<String, Object>) yaml.load(ios);
for (Object name : result.keySet()) {
key.add(name.toString());
value.add(result.get(name).toString());
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(key + " : " + value);
}
但是這也沒有工作。我得到「流關閉」錯誤,它不會加載任何東西。
任何人都知道誰來解決這個問題?
P.S .:我被告知使用蛇 - yaml庫,我不能下載任何其他的,以防萬一。
在Java中沒有任何方法可以獲取放置在項目文件夾下的文檔,而不是在任何包中? –
在運行時,Java沒有項目文件夾的概念;一堆.getResource()方法都基於ClassLoader和classpaths運行。您可以使用Class.getResource()以及調用類的相對路徑,也可以使用ClassLoader.getResource()以及相對於classpath的路徑。 –