要以静态方法调用getResourceAsStream
,我们使用ClassName.class
而不是getClass()
1.非静态方法
1
| getClass().getClassLoader().getResourceAsStream("config.properties"))
|
2.静态方式
1
| ClassName.class.class.getClassLoader().getResourceAsStream("config.properties"))
|
1.非静态方法
项目类路径中的.properties
文件。
src/main/resources/config.properties
FileHelper.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package com.mkyong; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { FileHelper obj = new FileHelper(); System.out.println(obj.getFilePathToSave()); } public String getFilePathToSave() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = getClass() .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
|
输出量
1
| /Users/mkyong/Documents/workspace/SnakeCrawler/data/
|
2.静态方法
如果将方法getFilePathToSave()
转换为静态方法,则getClass()
方法将失败,并提示无法从对象类型对非静态方法getClass()进行静态引用。
要解决此问题 , getClass()
更新为ClassName.class
FileHelper.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.mkyong; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { System.out.println(getFilePathToSaveStatic()); } public static String getFilePathToSaveStatic() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = FileHelper.class .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
|
输出量
1
| /Users/mkyong/Documents/workspace/SnakeCrawler/data/
|
参考文献