Linux_使用java给文件添加权限

在linux环境下使用java IO流复制文件,但是发小复制后的文件没有执行权限

我的环境是在一个SpringBoot项目,在启动时需要将一些文件拷贝到项目同级目录中,但是拷贝的文件没有执行权限,达不到预期效果。

网上有很多解决办法,试过了,不可用,一开始一直以为是别人的方法不行,后来发现是SpringBoot(极有可能,猜测)问题,解决如下

刚开始时是这种写法:简化的代码

public class InitEnvironment implements CommandLineRunner{
    //CommandLineRunner是SpringBoot提供的一个类,实现run方法的代码会在项目启动时自动执行

    @Override
    public void run(String... args) throws Exception {

        ......

        //linux添加权限代码
        String[] cmd = new String[]{"chmod 777 .../*"};
        ExecuteComandUtils.execute(cmd);//这个是我自己写的工具类,执行上面的代码

        ......
    }
}

通过日志发现,这段代码也执行了,但是就是不成功。后来给这段代码放在SpringBoot启动文件中终于成功了,why?(Springboot项目在创建时会有一个启动文件Application.java文件,仔细看操作)

@SpringBootApplication
public class Application {

    public void static main(String[] args){

        SpringApplication.run(Application.class, args);
    }
}

这段代码就是SpringBoot项目的初始代码了,在项目启动时,就是执行了main方法中的run方法,我将添加权限的操作放在run()方法执行完之后,就可以解决问题了(刚开始的时候我以为这个main方法的运行时间应该就是当前项目的运行时间,当SpringBoot项目停止时,这个main方法才会执行完。后来证明这个想法是错误的,main方法是直接执行完毕,但项目会继续运行)

修改后的代码:

@SpringBootApplication
public class Application {

    public void static main(String[] args){

        SpringApplication.run(Application.class, args);
        //linux添加权限代码
        String[] cmd = new String[]{"chmod 777 .../*"};
        ExecuteComandUtils.execute(cmd);
    }
}

这样就能解决无法添加权限的问题了,但是具体是什么原因,以及网上的方法为什么失效,还有待深究。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值