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

    /**
* 将文件或文件夹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. vs code解决golang开发环境问题 dial tcp 216.239.37.1:443: connectex: A connection attempt failed

    安装插件是出现 如下错误提示, https fetch failed: Get https://golang.org/x/tools/cmd/gorename?go-get=1: dial tcp 2 ...

  2. java中变量关系

  3. http.lua里的装饰器

    摘自:http.lua local co_yield = coroutine.yield local co_create = coroutine.create local co_status = co ...

  4. maven多模块依赖源码调试

    Maven多模块项目中,通常存在摸个模块同时依赖其他多个基础模块的情况.在eclipse中使用run-jetty-run插件调试时,常常会出现找不到被依赖模块对应源码的错误提示.举个例子,模块A同时依 ...

  5. 几个js 拓扑图库

    计划做一个元数据平台, 因为要包含血缘分析功能, 所以要调研一下js 拓扑图库, 候选对象主要参考知乎上的问答, javascript 有哪些适合做网络拓扑图形展示的包? https://www.zh ...

  6. webpack-config.js 内容讲解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面 (环境变量及其基本变量的配置) var path = require('path') m ...

  7. linux下安装好mysql后,登录时提示libgcc_s.so.1 must be installed for pthread_cancel to work

    网上找了很多帖子,各说纷纭, 自己到https://centos.pkgs.org/下载对应版本的libgcc_s.so.1,使用rpm -ivh libgcc-4.8.5-16.el7.i686.r ...

  8. CRLF Injection漏洞的利用与实例分析

    CRLF Injection很少遇见,这次被我逮住了.我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF ...

  9. 利用DNSLOG获取看不到的信息(给盲注带上眼镜)

    一.前言 本文原创作者:sucppVK,本文属i春秋原创奖励计划,未经许可禁止转载! 毕业设计总算搞得差不多了,这个心累啊.这不,完成了学校的任务,赶紧回来给蛋总交作业.今天给大家分享一个姿势吧,不是 ...

  10. 【LeetCode】89.Gary Code

    Problem: The gray code is a binary numeral system where two successive values differ in only one bit ...