静态方法中的getResourceAsStream

要以静态方法调用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

1
#config filejson.filepath = /Users/mkyong/Documents/workspace/SnakeCrawler/data/

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/

参考文献


静态方法中的getResourceAsStream
https://blog.ityet.com/2020/06/23/2020-6-23-get-resource/
作者
Leo
发布于
2020年6月23日
许可协议