java中使用renameTo函数的相关经验
2011-10-17 11:54
435 查看
最近在做新的项目,发现了一个问题:在java中使用reNameTo函数有时候会失败。找了很长时间的问题,也没有一个确切的答案。
在java底层的api中对此函数的使用有说明——使用时要关心一下操作系统使用的文件系统,于是想想就别用了。
既然是重命名,那就用“先拷贝在删除”的操作来替代renameto函数。代码很简单,如下:
我觉得如果有文件被打开的时候再去删除文件就会报错,但是我的想法是错误的,执行结果如下
从执行结果可以看出reNameFile函数已经执行完成了但是被删除的文件的内容还是能够被读取出来的,最后看了一下文件的变化情况,发现:reNameFile函数虽然执行完成但是文件却没有被删除,直到close后才被删除。
在java底层的api中对此函数的使用有说明——使用时要关心一下操作系统使用的文件系统,于是想想就别用了。
既然是重命名,那就用“先拷贝在删除”的操作来替代renameto函数。代码很简单,如下:
public class FileTools { private static Logger _log = Logger.getLogger(FileTools.class); /** * 文件重命名 * @param oldname * @param newname */ public static void reNameFile(String oldname, String newname){ _log.debug("reNameFile1"); try{ FileUtils.copyFile(new File(oldname), new File(newname)); _log.debug("reNameFile2"); // 删除原文件 new File(oldname).deleteOnExit(); _log.debug("reNameFile3"); }catch(IOException ioex){ _log.error("文件重命名失败:", ioex); } _log.debug("reNameFile4"); } public static void main(String[] args) throws IOException, InterruptedException { InputStream input = new FileInputStream(new File("d:\\wujh.cfg")); _log.debug(input.read()); _log.debug("main1"); reNameFile("d:\\wujh.cfg", "d:\\wujh1.cfg"); _log.debug("main2"); Thread.sleep(50000); _log.debug(input.read()); _log.debug("main3"); input.close(); } }
我觉得如果有文件被打开的时候再去删除文件就会报错,但是我的想法是错误的,执行结果如下
2011-10-17 11:52:27,656-[main][DEBUG]-[FileTools]83 2011-10-17 11:52:27,656-[main][DEBUG]-[FileTools]main1 2011-10-17 11:52:27,656-[main][DEBUG]-[FileTools]reNameFile1 2011-10-17 11:52:27,672-[main][DEBUG]-[FileTools]reNameFile2 2011-10-17 11:52:27,672-[main][DEBUG]-[FileTools]reNameFile3 2011-10-17 11:52:27,672-[main][DEBUG]-[FileTools]reNameFile4 2011-10-17 11:52:27,672-[main][DEBUG]-[FileTools]main2 2011-10-17 11:53:17,686-[main][DEBUG]-[FileTools]68 2011-10-17 11:53:17,686-[main][DEBUG]-[FileTools]main3
从执行结果可以看出reNameFile函数已经执行完成了但是被删除的文件的内容还是能够被读取出来的,最后看了一下文件的变化情况,发现:reNameFile函数虽然执行完成但是文件却没有被删除,直到close后才被删除。
相关文章推荐
- eclipse 使用技巧和java相关
- 在Eclipse中使用Maven插件 博客分类: Java相关技术
- java类使用经验
- iPhone应用开发ABAddressBook相关API使用经验
- java 相关工具使用
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- Intellij IDEA使用(十)—— 使用Intellij IDEA导入Eclipse创建的JavaWeb项目并修改相关配置
- JAVA使用、配置相关基础知识
- java 相关软件使用趋势
- Java file 文件的相关使用
- Java基础学习总结——Map使用相关问题总结
- Java 使用EE配置相关问题总结
- Java基本功练习十三(字符串和文本IO【相关概念、基本方法使用】)
- 非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法
- JavaCPP 技术使用经验总结
- Java枚举enum使用及相关的操作
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat
- java在SAE中使用的相关问题总结