java复制重命名,JAVA操作文件的复制和重命名失败的原因
最近在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操作文件的复制和重命名失败的原因相关推荐
- “小白Hare的成长之路“关于java 使用IO流对音频文件进行复制
需求:将一个音频文件通过读取,写入的方式复制到指定盘符下. 思路: 1.先获取文件的路径,包括需要复制的文件,和复制之后的路径和文件名 2.使用缓冲(BufferdInputStream;Buffer ...
- node操作文件夹复制与删除
文章目录 前言 文件夹复制思路 目标文件夹不存在 目标文件夹已存在 清空文件夹内容 删除所有空文件夹(包括目标文件夹) 总结 前言 webpack工具在打包前端文件时,比如打出的包为dist.clea ...
- 无法复制winevt中的文件_u盘文件无法复制怎么解决 u盘文件无法复制解决方法【详细步骤】...
在使用u盘的过程中有时会出现 文件无法复制 的问题,并且会弹出磁盘已满的提示,而经过检查,u盘容量却拥有足够大的空间,那么此时该如何解决呢?接下来就跟着小编学习如何解决 u盘文件无法复制 的问题. u ...
- 本地文件怎么复制到云服务器,本地文件如何复制到云服务器上
本地文件如何复制到云服务器上 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows ...
- Java大数据-Hadoop-HDFS客户端操作文件更名和移动
@Test public void testRename() throws IOException, InterruptedException, URISyntaxException{ // 1 获取 ...
- 计算机文件不能复制到u盘,电脑文件不能复制到u盘怎么解决-解决电脑文件不能复制到u盘的方法 - 河东软件园...
经常使用U盘的用户一定有遇到过这样的问题吧?每次想将电脑中的文件复制到U盘中时总是会被提示无法复制.此时若是打开U盘会发现文件是正常的,也能顺利的打开,但是不能删除文件!这是怎么回事呢?遇到了又该如何 ...
- 怎么把java设置高性能_2021-2-19:请问你知道 Java 如何高性能操作文件么?
一般高性能的涉及到存储框架,例如 RocketMQ,Kafka 这种消息队列,存储日志的时候,都是通过 Java File MMAP 实现的,那么什么是 Java File MMAP 呢? 什么是 J ...
- Python实现文件夹复制操作
Python实现文件夹复制操作 文件夹复制是日常开发中不可避免的需求,本文将为大家介绍如何使用Python实现文件夹复制操作. 在Python中,可以使用shutil模块来实现文件和文件夹的复制操作. ...
- 使用mmap实现大文件的复制:单进程与多进程情况
单线程和多进程实现文件的复制(mmap方法) mmap实现大文件的复制 单线程和多进程实现文件的复制(mmap方法) 一.单线程实现 二.多进程实现 一般文件实现方法: 1.读取(fread)要复制的 ...
最新文章
- 《小程序个人信息保护研究报告》解读
- JS三大对象中常用方法集锦
- linux查询服务器的dns,如何查看Linux系统中DNS服务器的运行状况
- 【剑指offer】面试题60:n个骰子的点数(Java)
- python常用包数据分析_数据分析领域常用的五个Python包
- 今天的绿得像碧玉的 飞鸽
- Android实现自定义曲线截屏,Android实现价格走势自定义曲线图
- 开源erp_大公司为何使用开源ERP
- 测试linux系统的程序员,日常测试Linux命令
- js初化加载页面时ajax会调用两次的原因_在前端开发中,有哪些因素会导致页面卡顿
- Linux Kernel 5.13 稳定版发布:初步支持 M1 芯片
- vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
- Opencv之读取yuv420P
- 构建之法 阅读笔记04
- tensorflow contrib_Tensorflow笔记:你都会了么?
- java markdown 转 pdf_markdown转为pdf文件
- Ubuntu安装DGE-530T网卡驱动
- JS实现轮播图(一看就懂逻辑清晰)
- ESP8266——入门:点亮TFT液晶屏(五)
- 设计模式 策略模式(Strategy)介绍和使用
热门文章
- 【福利】MySQL vs Postgre SQL: 5个你最关注的非技术维度的区别
- 五年时间完成业务数字化转型,华为如今做得怎么样了?
- 华为云专家私房课:视频传输技术选型的三大法宝
- 详解智能建筑消防预警系统设计与实现
- 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
- mysql 变量被引号括住_【已解决】mysql中操作表的字段名时是否一定要用反引号括起来...
- doxygen 教程 linux,doxygen linux
- php 生成缩略图保存,PHP批量生成图片缩略图的方法
- java运行多个linux命令_在shell的一行中运行多个命令
- 【python基础】ValueError: only 2 non-keyword arguments accepte