Linux下properties.store修改jar内properties文件无效

public static void setPro(String key, String value) throws Exception {

        Properties pps = new Properties();
        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
        pps.load(in);
        //InputStream 转 OutputStream
        OutputStream out = Tools.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties"));
        log.info("out:{}",out);

        pps.setProperty(key, value);
        log.info("pps:{}",pps);
        pps.store(out, "Update " + key + "----value:"+value);
        out.flush();
        out.close();

    }

### 如何在Linux环境中编辑Properties配置文件 #### 使用Vim编辑器修改现有Properties文件 对于已经存在的`.properties`文件,在Linux环境下可以利用命令行工具如Vim来进行编辑。具体操作如下: 打开终端并进入含有待编辑的`.properties`文件所在的目录,执行以下命令启动Vim编辑模式: ```bash vim application.properties ``` 这会开启一个基于文本界面的应用程序,允许用户浏览和更改文件内容[^2]。 #### 修改JAR包内的Properties文件 如果需要更新打包于Java应用程序中的资源文件(例如位于JAR档案内部),则先解压该压缩包找到对应的路径再做调整。比如针对名为`app.jar`的文件里特定位置下的属性设置文档,可以通过下面的方式访问它: ```bash unzip app.jar -d temp_dir/ vim temp_dir/BOOT-INF/classes/config/application.properties # 完成编辑后保存退出 cd temp_dir jar uf ../app.jar . rm -rf temp_dir/ ``` 上述过程展示了怎样安全地对外部存储介质上的数据做出变更而不破坏原有结构。 #### 处理IDEA中显示为Unicode编码的问题 当遇到IntelliJ IDEA读取`.properties`文件时自动转换汉字成为`\uXXXX`形式的情况,可通过调整项目级或全局级别的编译参数解决此现象。确保新建或是现有的`.properties`都能正常呈现中文字符而不是其十六进制表示法[^1]。 #### 结合Spring Boot多环境特性管理Properties文件 考虑到实际应用场景下可能存在多个不同的部署条件——即开发、测试以及生产三种状态;为了简化切换流程减少人为失误风险,推荐借助框架本身提供的机制实现动态加载相应的设定项。通过命名约定(`application-{profile}.properties`)来区分各个场景专属的信息集合[^3]。 #### 利用Java内置API解析与写入Properties文件 除了手动干预之外,还可以编程方式自动化完成对这些纯ASCII码格式化文本的操作。依靠标准库里的`java.util.Properties`类实例方法能够轻松达成目的。这里给出一段简单的示范代码用于说明如何加载指定路径处的目标文件,并对其进行增删改查等一系列动作[^4]: ```java import java.io.*; import java.util.*; public class PropertyEditor { public static void main(String[] args){ Properties prop = new Properties(); try (InputStream input = new FileInputStream("config.properties")) { // load a properties file prop.load(input); // get the property value and print it out System.out.println(prop.getProperty("database.url")); // set the property value prop.setProperty("new.key", "value"); // save changes to config.properties file try(OutputStream output = new FileOutputStream("config.properties")){ prop.store(output, null); } } catch (IOException ex) { ex.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值