主要是工作代码,无解释。

    /**
* 将文件或文件夹source复制到dest
* <br>目标文件检测:
* <br> a.当文件不存在时:需要创建文件
* <br> 根据是否有后缀名来确定是创建的是文件夹还是文件,有后缀名时创建文件
* <br> 如果创建的是文件夹则会将source复制到dest文件夹中。
* <br> 如果是文件,则直接将source复制为dest
* <br> b.当文件存在时:需要判断目标文件是文件夹还是文件
* <br> 如果是文件夹,在该文件夹下创建以来源文件名命名的文件
* @param source
* @param dest
*/
public static void moveFile(File source,File dest) throws FileNotFoundException,IOException{
FileInputStream fis = null;
FileChannel fc= null;
FileOutputStream fout= null;
WritableByteChannel to= null;
try {
if(!source.exists()){
System.out.println("源文件不存在!");
return ;
}
if(source.isDirectory()){
File[] srcs = source.listFiles();
for(File src:srcs){
moveFile(src,new File(dest.getPath()+File.separator+src.getName()));
}
}else{
if(!dest.exists()){
if(!new File(dest.getParent()).exists()){
new File(dest.getParent()).mkdirs();
}
//根据是否有后缀名来确定是创建的是文件夹还是文件,有后缀名时创建文件。
if(dest.getName().matches(".*\\..*")){
dest.createNewFile();
}else{
dest.mkdir();
dest = new File(dest.getPath()+File.separator+source.getName());
dest.createNewFile();
}
}else{
//当目标文件存在时,需要判断目标文件是文件夹还是文件,如果是文件夹,在该文件夹下创建以来源文件名命名的文件
if(!dest.getName().matches(".*\\..*")){
dest = new File(dest.getPath()+File.separator+source.getName());
dest.createNewFile();
}
}
fis = new FileInputStream(source);
fc=fis.getChannel();
fout=new FileOutputStream(dest);
to=fout.getChannel();
fc.transferTo(0,fc.size(),to);
fis.close();
fc.close();
fout.flush();
fout.close();
to.close();
}
} catch (FileNotFoundException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
if(fis!=null){
fis.close();
}
if(fc!=null){
fc.close();
}
if(fout!=null){
fout.flush();
fout.close();
}
if(to!=null){
to.close();
}
}
}

Java文件复制的更多相关文章

  1. IO复制多级目录 控制台输入文件目录然后把目录下java文件复制到 D: 并统计java个数

    package cn.itcast_05; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...

  2. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  3. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  4. Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  5. Java文件复制与读写

    函数介绍 public String readLine():每次读取文件的一行,当文件读取完毕时,返回null     public int read(byte[] b):将文件内容读取到字节数组b ...

  6. java 文件复制

      java实现文件复制 CreateTime--2017年9月7日15:04:48 Author:Marydon 1.需求 根据原文件复制一份到指定位置 2.代码实现 需要导入: import ja ...

  7. Java文件复制删除操作合集

    import java.io.*; public class FileOperate { public FileOperate() { } /** * 新建目录 * @param folderPath ...

  8. java 文件复制操作

    本案例采用第三方 jar 包完成,commons-io-2.5.jar, 这个 jar 对文件操作非常方便,大家可以尝试使用一下. 这里贴一个简单的 demo 供大家使用 import java.io ...

  9. java文件复制函数

    在写代码中,经常会需要复制文件.这时候就可以把这些函数放到工具类里面. 下面是一个复制文件的函数: public class CopyFileUtil { private static String ...

随机推荐

  1. MySQL中innodb_flush_log_at_trx_commit的设置

    innodb_flush_log_at_trx_commit=0,在提交事务时,InnoDB不会立即触发将缓存日志写到磁盘文件的操作,而是每秒触发一次缓存日志回写磁盘操作,并调用操作系统fsync刷新 ...

  2. UVA - 1328 Period(循环节kmp)

    https://vjudge.net/problem/UVA-1328 题意 求每个前缀的最小循环节,要求至少循环两次且为完整的. 分析 求next数组,i-next[i]即为前缀i的最小循环节,再判 ...

  3. HTML第五耍 表格标签

    HTML标记语言中可以使用table标签创建表格. 表格由 <table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),字母 tr 指表格数据(table row ...

  4. mongoDB与mongoose

    mongodb是一个基于分布式文件存储的文档型数据库 MongoDB 是一个介于关系数据库和非关系数据库之间的产品 MongoDB 最大的特点是他支持的查询语言非常强大,而且还支持对数据建立索引 官方 ...

  5. 前端面试题整理—ajax篇

    1.什么是Ajax和JSON,它们的优缺点 Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页 ...

  6. tedu训练营day01

    1.三大操作系统 1.Unix :MacOS 2.Linux :Ubuntu18.04 .CentOS.RedHat 3.Windows :Win7.Win8.Win102.VMware Workst ...

  7. 细说java系列之注解

    写在前面 Java从1.5版本之后开始支持注解,通过注解可以很方便地实现某些功能,使用得最普遍的就是Spring框架的注解,大大简化了Bean的配置. 注解仅仅是一种Java提供的工具,并不是一种编程 ...

  8. IIS Express URL Rewrite无效

    点击一下项目,再选择属性选项卡(不是右键属性) 如上图,如果托管管道模式是集成的话,改为经典即可.如果在vs2010的 WebDev.WebServer40方式启动 默认就是经典模式

  9. Oracle SQL*Plus命令

    登录数据库: 方式(1)当我们刚安装Oracle数据库时,登录账户时可以使用win+r 输入sqlplus,进入sqlplus命令窗口,然后输入用户名和密码,这里输入密码时不会有回显 方式(2)使用w ...

  10. MobSF移动渗透测试框架

    1.https://github.com/MobSF/Mobile-Security-Framework-MobSF/wiki/1.-Documentation 2.http://www.freebu ...