博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
File的renameTo操作备忘
阅读量:6070 次
发布时间:2019-06-20

本文共 1957 字,大约阅读时间需要 6 分钟。

1.src.renameTo(dest)  //java中重命名文件或文件夹的方法。类似于linux中的mv命令。重命名的操作很重要。比如存在下面的场景,一个源将内容同步到目标,并且同时有线程阻塞处理目标中的内容。并且处理的前提条件是目标内容是完全同步过之后才处理。

这种场景最适合renameTo,先将源内容rsync到一个中间的文件夹,然后renameTo中间的文件夹为目标文件夹,应用程序只判断目标文件夹是否存在,一旦存在,就表明里面的内容也是完整的。这样的方式要好于将源直接同步到目标,由于存在同步的过程,导致应用程序读数据错误。

import java.io.File;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestFile implements Runnable{    File file;    File file2;    public TestFile()    {        try        {            ExecutorService exec = Executors.newSingleThreadExecutor();            exec.execute(this);            exec.shutdown();        }        catch (Exception ex)        {            System.out.println(ex);        }    }    public void init()    {        System.out.println("do some init");        file = new File("/tmp/middle");        file2 = new File("/tmp/dest");    }    public static void main(String[] args) throws Exception    {        // main用来模拟linux里面的mv操作。这里的main方法可以改良成crontab定时执行mv操作。mv与renameTo一样的重要!!!一样的使用场景。        // linux:当源不存在的时候,会报错。目标路径不存在的话,也没有关系,会按目标路径去重命名。        // windows:不允许应用程序重命名文件夹。本身基于安全和文件索引等考虑。        // 如果dest为null,将抛出NPE.        TestFile tf = new TestFile();        tf.init();        System.out.println(tf.file.isDirectory() + "|" + tf.file2.isDirectory());        System.out.println(tf.file.renameTo(tf.file2));    }    @Override    public void run()    {        while (true) // block        {            try            {                // 每隔1s处理                Thread.sleep(1000);                // 如果存在,开始应用程序处理。                if (file2.exists())                {                    // 模拟应用程序处理数据。                    Thread.sleep(1000);                    // renameTo用来停止应用程序处理。与exist天生一对。                    file2.renameTo(file);                    System.out.println("应用程序处理完数据。");                }            }            catch (Exception e)            {                e.printStackTrace();            }        }    }}

 

 

 

转载地址:http://yzfgx.baihongyu.com/

你可能感兴趣的文章
学习资料下载地址
查看>>
exit()和_exit()和return
查看>>
apache开源项目-- NiFi
查看>>
java 导出excel
查看>>
lintcode:next permutation下一个排列
查看>>
PX4/PixHawk无人机飞控应用开发
查看>>
Makefile学习(一)[第二版]
查看>>
unity中的MonoBehaviour.OnMouseDown()
查看>>
编写 Unity Editor 插件
查看>>
Oracle 数据的导入和导出(SID service.msc)
查看>>
如何使用angularjs实现ajax异步请求
查看>>
yii cookie ,session 操作
查看>>
Navicat连接oracle,出现Only compatible with oci version 8.1 and&nb
查看>>
未来是两个人的事
查看>>
联想杨元庆:互联网不包治百病 概念被夸大
查看>>
OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的!
查看>>
centos6.2+nginx-1.2.3+php-5.3.17安装脚本
查看>>
2015搜狐在线笔试题(内存泄露问题)(转)
查看>>
sed用法
查看>>
linux 工具: Top
查看>>