java修改文件名-renameTo()方法的使用实例,复制一个文件或者叫转存一个文件

java修改文件名-renameTo()方法的使用实例,复制一个文件或者叫转存一个文件

/**
 * 重命名一个文件:将原来的文件直接修改
 */
private static void testRenameFile() {
    String filePath = "D:/test/我是.conf";
    try {
        File src = new File(filePath);
        filePath += ".properties";
        File des = new File(filePath);
        if (des.exists()) {
            boolean res = des.delete();
            if (!res) {
                System.out.println("Failed to delete file");
            }
        }
        if (!src.renameTo(des)) {
            System.out.println("Failed to renameTo file");
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

下面是操作前后的,对比截图。

稍加说明:

可见是在原来的文件上直接修改的,重命名之后,原来的文件就不见了,这个好像不大符合要求,

还是写个代码,简单的实现一下转存比较好。就是把原文件留在原地,然后,复制一个出来,在换个名称。这么个解决方法才是比较合理的。

然后下面是代码实现,实现转存一个文件。

 /**
     * 用缓冲区读写,来提升读写效率。
     */
    private static void fileCopyRightWay() {
        FileWriter fw = null;
        FileReader fr = null;
        try {
            fr = new FileReader("D:/test/我是.conf");//读
            fw = new FileWriter("D:/test/我是.conf.properties");//写
            char[] buf = new char[1024];//缓冲区
            int len;
            while ((len = fr.read(buf)) != -1) {
                fw.write(buf, 0, len);//读几个写几个
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            }

            if (fw != null) {
                try {
                    fw.flush();
                    fw.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            }
        }
    }

操作前后的对比图。
这里写图片描述

为什么我要重命名文件呢?

因为我使用的是Java的Properties的类读取配置属性。
但是呢,配置文件的名称呢又不是以.properties结尾的。但是文件内容却是properties文件。
具体可以参看上面的执行结果的截图。
所以,我就天真的以为,把原来的文件转存一下,修改了下文件名,刚刚开始使用renameTo()方法。
但是,这个会把原来的文件给修改了。也不合适,然后才出现后面的转存文件的代码。
原来,读取文件的时候,是跟文件的后缀名是没有半毛钱关系的。
所以,根本就不需要把原来要读的文件,修改成以.properties结尾的properties文件,再读。
当然,存的时候,也是,直接调用properties.store();方法,保存就可以了。
保存的文件名以及文件的格式,是txt还是properties还是Excel,还是啥的,都不影响写入的。
使用properties.store();就直接给存成文件了,文件名以及各式无所谓啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值