最近在coding Java复制文件夹的时候,比较懒,直接百度了一个方法,直接使用到项目中,后面再调用重命名方法的时候,总是返回false,“视野”不开阔,百度了很久不思其解。“改装”后的copyFolder也有回收文件流呀,为什么不行呢。  后面仔细一看, 在复制文件的时候,存在子文件是文件夹的情况,然后会迭代调用函数自己,这时候可能流的回收不够彻底,一怒之下,直接全部包了try cache 在finally的时候,全部回收。 仿佛all in了一样,这次再不行,真的要跪了..... 但是,真的成功了。下面贴下代码,“改装” 之后可能还有问题,望指出...

/**

*  复制整个文件夹内容

*  @param  oldPath  String  原文件路径  如:c:/fqf

*  @param  newPath  String  复制后路径  如:f:/fqf/ff

*  @return  boolean

* @throws IOException

*/

public static  void  copyFolder(String oldPath, String newPath) throws Exception  {

FileInputStream  input = null;

FileOutputStream  output = null;

try  {

(new File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹

File  oldFile = new File(oldPath);

String[]  oldFileChildFile = oldFile.list();

File  temp = null;

for  (int  i  =  0;  i  <  oldFileChildFile.length;  i++)  {

if(oldPath.endsWith(File.separator)){

temp=new  File(oldPath + oldFileChildFile[i]);

}else{

temp=new  File(oldPath + File.separator+oldFileChildFile[i]);

}

if(temp.isFile()){

try {

input  =  new  FileInputStream(temp);

output  =  new  FileOutputStream(newPath  +  "/"  +

(temp.getName()).toString());

byte[] b = new  byte[1024 * 5];

int  len;

while  (  (len  =  input.read(b))  !=  -1)  {

output.write(b,  0,  len);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(null != input){

input.close();

}

if(null != output){

output.flush();

output.close();

}

}

}

if(temp.isDirectory()){//如果是子文件夹

try {

copyFolder(oldPath+"/"+oldFileChildFile[i],newPath+"/"+oldFileChildFile[i]);

} catch (Exception e) {

e.printStackTrace();

} finally{

if(null != input){

input.close();

}

if(null != output){

output.flush();

output.close();

}

}

}

}

} catch  (Exception  e)  {

e.printStackTrace();

throw new Exception("复制整个文件夹内容操作出错");

} finally{

if(null != input){

input.close();

}

if(null != output){

output.flush();

output.close();

}

}

}

据说,重命名方法renameTo在linux下会有问题,用common-io的重命名就不会有事了吗?求解答...

java复制重命名,JAVA操作文件的复制和重命名失败的原因相关推荐

  1. “小白Hare的成长之路“关于java 使用IO流对音频文件进行复制

    需求:将一个音频文件通过读取,写入的方式复制到指定盘符下. 思路: 1.先获取文件的路径,包括需要复制的文件,和复制之后的路径和文件名 2.使用缓冲(BufferdInputStream;Buffer ...

  2. node操作文件夹复制与删除

    文章目录 前言 文件夹复制思路 目标文件夹不存在 目标文件夹已存在 清空文件夹内容 删除所有空文件夹(包括目标文件夹) 总结 前言 webpack工具在打包前端文件时,比如打出的包为dist.clea ...

  3. 无法复制winevt中的文件_u盘文件无法复制怎么解决 u盘文件无法复制解决方法【详细步骤】...

    在使用u盘的过程中有时会出现 文件无法复制 的问题,并且会弹出磁盘已满的提示,而经过检查,u盘容量却拥有足够大的空间,那么此时该如何解决呢?接下来就跟着小编学习如何解决 u盘文件无法复制 的问题. u ...

  4. 本地文件怎么复制到云服务器,本地文件如何复制到云服务器上

    本地文件如何复制到云服务器上 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows ...

  5. Java大数据-Hadoop-HDFS客户端操作文件更名和移动

    @Test public void testRename() throws IOException, InterruptedException, URISyntaxException{ // 1 获取 ...

  6. 计算机文件不能复制到u盘,电脑文件不能复制到u盘怎么解决-解决电脑文件不能复制到u盘的方法 - 河东软件园...

    经常使用U盘的用户一定有遇到过这样的问题吧?每次想将电脑中的文件复制到U盘中时总是会被提示无法复制.此时若是打开U盘会发现文件是正常的,也能顺利的打开,但是不能删除文件!这是怎么回事呢?遇到了又该如何 ...

  7. 怎么把java设置高性能_2021-2-19:请问你知道 Java 如何高性能操作文件么?

    一般高性能的涉及到存储框架,例如 RocketMQ,Kafka 这种消息队列,存储日志的时候,都是通过 Java File MMAP 实现的,那么什么是 Java File MMAP 呢? 什么是 J ...

  8. Python实现文件夹复制操作

    Python实现文件夹复制操作 文件夹复制是日常开发中不可避免的需求,本文将为大家介绍如何使用Python实现文件夹复制操作. 在Python中,可以使用shutil模块来实现文件和文件夹的复制操作. ...

  9. 使用mmap实现大文件的复制:单进程与多进程情况

    单线程和多进程实现文件的复制(mmap方法) mmap实现大文件的复制 单线程和多进程实现文件的复制(mmap方法) 一.单线程实现 二.多进程实现 一般文件实现方法: 1.读取(fread)要复制的 ...

最新文章

  1. 《小程序个人信息保护研究报告》解读
  2. JS三大对象中常用方法集锦
  3. linux查询服务器的dns,如何查看Linux系统中DNS服务器的运行状况
  4. 【剑指offer】面试题60:n个骰子的点数(Java)
  5. python常用包数据分析_数据分析领域常用的五个Python包
  6. 今天的绿得像碧玉的 飞鸽
  7. Android实现自定义曲线截屏,Android实现价格走势自定义曲线图
  8. 开源erp_大公司为何使用开源ERP
  9. 测试linux系统的程序员,日常测试Linux命令
  10. js初化加载页面时ajax会调用两次的原因_在前端开发中,有哪些因素会导致页面卡顿
  11. Linux Kernel 5.13 稳定版发布:初步支持 M1 芯片
  12. vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
  13. Opencv之读取yuv420P
  14. 构建之法 阅读笔记04
  15. tensorflow contrib_Tensorflow笔记:你都会了么?
  16. java markdown 转 pdf_markdown转为pdf文件
  17. Ubuntu安装DGE-530T网卡驱动
  18. JS实现轮播图(一看就懂逻辑清晰)
  19. ESP8266——入门:点亮TFT液晶屏(五)
  20. 设计模式 策略模式(Strategy)介绍和使用

热门文章

  1. 【福利】MySQL vs Postgre SQL: 5个你最关注的非技术维度的区别
  2. 五年时间完成业务数字化转型,华为如今做得怎么样了?
  3. 华为云专家私房课:视频传输技术选型的三大法宝
  4. 详解智能建筑消防预警系统设计与实现
  5. 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
  6. mysql 变量被引号括住_【已解决】mysql中操作表的字段名时是否一定要用反引号括起来...
  7. doxygen 教程 linux,doxygen linux
  8. php 生成缩略图保存,PHP批量生成图片缩略图的方法
  9. java运行多个linux命令_在shell的一行中运行多个命令
  10. 【python基础】ValueError: only 2 non-keyword arguments accepte