maven读取resources下配置文件的路径问题

发布于 2021-12-05 15:23:08 字数 198 浏览 733 评论 3

new FileInputStream("src/main/resources/all.properties")

new FileInputStream("./src/main/resources/all.properties")

上面两个无法读取maven下资源文件目录下的文件嘛,总是提示找不到该路径,这么写错了嘛,但是我的其他maven可以读取

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2021-12-06 04:37:08

要取编译后的路径,而不是你看到的src/main/resources的路径。如下:

URL url = MyTest.class.getClassLoader().getResource("conf.properties");
File file = new File(url.getFile());

或者

InputStream is = MyTest.class.getClassLoader().getResourceAsStream("conf.properties");

 

凌乱心跳 2021-12-06 01:05:44

写全路径,或者classpath

岁月打碎记忆 2021-12-05 19:09:14

src/main/resources/all.properties 这个按我理解应该为classpath下的resources目录的all.properties文件。

public class Test {

	public static void main(String[] args) throws java.net.URISyntaxException, java.io.FileNotFoundException {
		String path = "resources/all.properties";
		getStream(path);
	}

	public static java.io.InputStream getStream(String path) throws java.net.URISyntaxException, java.io.FileNotFoundException {
		ClassLoader cl = getDefaultClassLoader();
		java.net.URL url = cl == null ? ClassLoader.getSystemResource(path) : cl.getResource(path);
		java.io.File resourceFile = new java.io.File(new java.net.URI(replace(url.toString(), " ", "%20")).getSchemeSpecificPart());
		System.out.println(resourceFile.getAbsolutePath());
		java.io.InputStream is = new java.io.FileInputStream(resourceFile);
		return is;
	}

	public static ClassLoader getDefaultClassLoader() {
		ClassLoader cl = null;
		try {
			cl = Thread.currentThread().getContextClassLoader();
		} catch (Throwable throwable) {
		}
		if (cl == null) {
			cl = Test.class.getClassLoader();
			if (cl == null)
				try {
					cl = ClassLoader.getSystemClassLoader();
				} catch (Throwable throwable1) {
				}
		}
		return cl;
	}

	public static String replace(String inString, String oldPattern, String newPattern) {
		if (!hasLength(inString) || !hasLength(oldPattern) || newPattern == null)
			return inString;
		StringBuilder sb = new StringBuilder();
		int pos = 0;
		int index = inString.indexOf(oldPattern);
		int patLen = oldPattern.length();
		for (; index >= 0; index = inString.indexOf(oldPattern, pos)) {
			sb.append(inString.substring(pos, index));
			sb.append(newPattern);
			pos = index + patLen;
		}

		sb.append(inString.substring(pos));
		return sb.toString();
	}

	public static boolean hasLength(CharSequence str) {
		return str != null && str.length() > 0;
	}
}

 

 

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文