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

    /**
* 将文件或文件夹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. Windows netstat 查看端口、进程占用 查看进程路径

    1.查看端口.进程占用 运行->进入cmd->netstat -ano 2.查看进程路径 运行->WMIC->process 3.查看进程PID和占用内存情况 运行->进 ...

  2. Emacs 快速指南(中文翻译)

      Emacs 快速指南 目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RESP ...

  3. C#中ICollection介绍

    ICollection 接口是 System.Collections 命名空间中类的基接口,ICollection 接口扩展 IEnumerable,IDictionary 和 IList 则是扩展 ...

  4. MVC Repository模式

    近来发现很多ASP.NET MVC的例子中都使用了Repository模式,比如Oxite,ScottGu最近发布的免费的ASP.NET MVC教程都使用了该模式.就简单看了下. 在<企业架构模 ...

  5. jquery中$.post()方法的简单实例

    在jqery中有这样一个方法,$.post()下面就这个方法做一个简单的实例: jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异 ...

  6. java中的日志打印

    java中的日志打印: 日志工具类: #获取日志 INFO:表示获取日志的等级 A1:表示日志存器,可以自定义名称 #===DEBUG INFO log4j.rootLogger=DEBUG,A1,A ...

  7. vue 组件数据传递

    vue组件化开发 主要为了把一个大功能拆分成若干个小的功能,解决高耦合问题,同时也方便开发人员维护.   从功能上组件可以分为木偶组件和功能组件. 木偶组件(为了接收数据,渲染数据,基本上是没有逻辑的 ...

  8. MongoDB统计文档(Document)的数组(Array)中的各个元素出现的次数

    一,问题描述 [使用 unwind 操作符 “解包” Document 里面的Array中的每个元素,然后使用 group 分组统计,最后使用 sort 对分组结果排序] 从 images.json ...

  9. spring注解第02课 包扫描@ComponentScan、@ComponentScans

    1.配置文件形式: <context:component-scan base-package="com.atguigu" /> spring会扫描此包下的@Servic ...

  10. loj 10181 绿色通道 二分答案+单调队列DP

    空题段长度即为单调队列长度区间 每次二分答案进行check即可 #include<bits/stdc++.h> using namespace std; ; const int inf=0 ...