服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java读取resources中资源文件路径以及jar中文件无法读取如何解决

Java读取resources中资源文件路径以及jar中文件无法读取如何解决

2023-06-22 01:18未知服务器之家 Java教程

今天小编给大家分享的是Java读取resources中资源文件路径以及jar中文件无法读取如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 Java读取resources中资源文

今天小编给大家分享的是Java读取resources中资源文件路径以及jar中文件无法读取如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

Java读取resources中资源文件路径以及jar中文件无法读取的解决

问题描述

现象

作为一个刚开始学习java的新人,很多东西都是摸着石头过河,踩坑是常有的事。这不,今天我将maven管理的一个spring boot的WebAPP部署到服务器上,运行直接报错!纳尼!!!本地跑得好好的,一到服务器就出问题,关键是日志文件中的日志不全,无法马上定位到问题。好吧,一步一步排除问题吧!

定位

是不是windows与linux的区别?不是,我在windows上跑了一下打包后的代码,也出问题了,打包前没问题,打包后出问题了,包有毒!然后我开放了日志,一步一步调试(蛋疼啊),最终发现配置文件没有加载,路径出了问题。。。

前言

工程文件结构如下所示,目标是读取resources/python/kafka_producer.py文件

Java读取resources中资源文件路径以及jar中文件无法读取如何解决

inStream = PropertiesTest.class.getResourceAsStream("/com/test/demo/test.properties")

方式二:采用Spring注解

如果工程中使用Spring,可以通过注解的方式获取配置信息,但需要将配置文件放到Spring配置文件中扫描后,才能将配置信息放入上下文。

 <context:component-scan base-package="com.xxxx.service"/>
 <context:property-placeholder location="classpath:properties/xxx.properties" ignore-unresolvable="true"/>

然后在程序中可以使用 @Value进行获取properties文件中的属性值,如下:

 @Value("${xxxt.server}")
 private static String serverUrl;

方式三:采用Spring配置

也可以在Spring配置文件中读取属性值,赋予类成员变量

<?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
      <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
          <property name="location" value="classpath:properties/xxx.properties"/>
      </bean>
     <bean id="service" class="com.xxxx.service.ServiceImpl">         <property name="serverUrl" value="${xxxt.server}" />
     </bean>
 </beans>

重点:SpringBoot项目启动后,动态的读取类路径下文件数据

InputStream inputStream = EncryptUtil.class.getResourceAsStream("/HelloServiceEncryptFile.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = reader.readLine();
// 获取类路径下的文件路径
File path = new File(ResourceUtils.getURL("classpath:").getPath());
if (!path.exists()) {
   path = new File("");
}
log.info("path = {}", path.getAbsolutePath());
File upload = new File(path.getAbsolutePath(), "com/study/service");
if (!upload.exists()) {
    upload.mkdirs();
}
FileOutputStream fos = new FileOutputStream(upload.getAbsolutePath() + File.separator + "hello.txt");
IoUtil.copy(inputStream, fos);
fos.close();
inputStream.close();

注意:此时我想读取 jar 包中根路径下的 HelloServiceEncryptFile.txt 文件,然后重新写入到根路径下的 com.study/service 路径下!

关于Java读取resources中资源文件路径以及jar中文件无法读取如何解决就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

延伸 · 阅读

精彩推荐