原文地址:java 读取classpath下的文件_liuec1002的博客-CSDN博客_java读取classpath下的文件
1,获取classpath路径
EnvironmentPostProcessorCustomer为获取类路径的类
// classpath目录下
URL resource = EnvironmentPostProcessorCustomer.class.getResource("/");
System.out.println(resource);
//file:/E:/daima/0903/scf/scf_base/target/classes/
// classpath+该类所在路径
URL resource1 = EnvironmentPostProcessorCustomer.class.getResource("");
// file:/E:/daima/0903/scf/scf_base/target/classes/com/scf/common/
System.out.println(resource1);
// classpath目录下
URL resource2 = EnvironmentPostProcessorCustomer.class.getClassLoader().getResource("");
System.out.println(resource2);
// file:/E:/daima/0903/scf/scf_base/target/classes/
// null
URL resource3 = EnvironmentPostProcessorCustomer.class.getClassLoader().getResource("/");
System.out.println(resource3);
// null
2,获取classpath下文件输入流
// classpath下
InputStream asStream = EnvironmentPostProcessorCustomer.class.getClassLoader().getResourceAsStream("jdbc.properties");
System.out.println("asStream:"+asStream);
// 加 / 表示获取classpath下,不加/返回为null
InputStream asStream1 = EnvironmentPostProcessorCustomer.class.getResourceAsStream("/jdbc.properties");
System.out.println("asStream1:"+asStream1);
// 获取classpath下文件
InputStream asStream2 = EnvironmentPostProcessorCustomer.class.getClassLoader().getSystemResourceAsStream("jdbc.properties");
System.out.println("asStream2:"+asStream2);
System.out.println("--------------------------------------");
// 使用工具类ResourceUtils获取classpath下文件
// File file1 = ResourceUtils.getFile("jdbc.properties");
//FileInputStream is = new FileInputStream(file1);
//System.out.println("is:"+is);
System.out.println("---------使用URL对象打开文件流,例子如下---------");
InputStream inputStream = EnvironmentPostProcessorCustomer.class.getResource("/jdbc.properties").openStream();
FileOutputStream fos = new FileOutputStream("D:\\aaa.txt");
byte[] bys = new byte[1024];
int len;
while ((len = inputStream.read(bys)) != -1) {
fos.write(bys, 0, len);
fos.flush();
}