在写代码中,经常会需要复制文件。这时候就可以把这些函数放到工具类里面。

下面是一个复制文件的函数:

public class CopyFileUtil {  

    private static String MESSAGE = "";  

    /**
* 复制单个文件
*
* @param srcFileName
* 待复制的文件名
* @param descFileName
* 目标文件名
* @param overlay
* 如果目标文件存在,是否覆盖
* @return 如果复制成功返回true,否则返回false
*/
public static boolean copyFile(String srcFileName, String destFileName,
boolean overlay) {
File srcFile = new File(srcFileName); // 判断源文件是否存在
if (!srcFile.exists()) {
MESSAGE = "源文件:" + srcFileName + "不存在!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
} else if (!srcFile.isFile()) {
MESSAGE = "复制文件失败,源文件:" + srcFileName + "不是一个文件!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
} // 判断目标文件是否存在
File destFile = new File(destFileName);
if (destFile.exists()) {
// 如果目标文件存在并允许覆盖
if (overlay) {
// 删除已经存在的目标文件,无论目标文件是目录还是单个文件
new File(destFileName).delete();
}
} else {
// 如果目标文件所在目录不存在,则创建目录
if (!destFile.getParentFile().exists()) {
// 目标文件所在目录不存在
if (!destFile.getParentFile().mkdirs()) {
// 复制文件失败:创建目标文件所在目录失败
return false;
}
}
} // 复制文件
int byteread = 0; // 读取的字节数
InputStream in = null;
OutputStream out = null; try {
in = new FileInputStream(srcFile);
out = new FileOutputStream(destFile);
byte[] buffer = new byte[1024]; while ((byteread = in.read(buffer)) != -1) {
out.write(buffer, 0, byteread);
}
return true;
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
} finally {
try {
if (out != null)
out.close();
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

  

复制整个文件夹的方法:

 /**
* 复制整个目录的内容
*
* @param srcDirName
* 待复制目录的目录名
* @param destDirName
* 目标目录名
* @param overlay
* 如果目标目录存在,是否覆盖
* @return 如果复制成功返回true,否则返回false
*/
public static boolean copyDirectory(String srcDirName, String destDirName,
boolean overlay) {
// 判断源目录是否存在
File srcDir = new File(srcDirName);
if (!srcDir.exists()) {
MESSAGE = "复制目录失败:源目录" + srcDirName + "不存在!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
} else if (!srcDir.isDirectory()) {
MESSAGE = "复制目录失败:" + srcDirName + "不是目录!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
} // 如果目标目录名不是以文件分隔符结尾,则加上文件分隔符
if (!destDirName.endsWith(File.separator)) {
destDirName = destDirName + File.separator;
}
File destDir = new File(destDirName);
// 如果目标文件夹存在
if (destDir.exists()) {
// 如果允许覆盖则删除已存在的目标目录
if (overlay) {
new File(destDirName).delete();
} else {
MESSAGE = "复制目录失败:目的目录" + destDirName + "已存在!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
}
} else {
// 创建目的目录
System.out.println("目的目录不存在,准备创建。。。");
if (!destDir.mkdirs()) {
System.out.println("复制目录失败:创建目的目录失败!");
return false;
}
} boolean flag = true;
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
// 复制文件
if (files[i].isFile()) {
flag = CopyFileUtil.copyFile(files[i].getAbsolutePath(),
destDirName + files[i].getName(), overlay);
if (!flag)
break;
} else if (files[i].isDirectory()) {
flag = CopyFileUtil.copyDirectory(files[i].getAbsolutePath(),
destDirName + files[i].getName(), overlay);
if (!flag)
break;
}
}
if (!flag) {
MESSAGE = "复制目录" + srcDirName + "至" + destDirName + "失败!";
JOptionPane.showMessageDialog(null, MESSAGE);
return false;
} else {
return true;
}
} public static void main(String[] args) {
String srcDirName = "C:/test/test0/test1";
String destDirName = "c:/ttt";
CopyFileUtil.copyDirectory(srcDirName, destDirName, true);
}
}

  

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文件复制

    主要是工作代码,无解释. /** * 将文件或文件夹source复制到dest * <br>目标文件检测: * <br> a.当文件不存在时:需要创建文件 * <br&g ...

随机推荐

  1. canvas画简单电路图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. IOS 回收键盘通用代码

    感觉IOS的键盘回收好累,所以封装了一个通用一点的方法 -(IBAction)spbResignFirstResponder:(id)sender { // NSLogObj(sender); if ...

  3. SQLServer中游标是如何处理数据的?

    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力.我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许 ...

  4. GitHub for Windows 2.0使用教程

    Git是目前最先进的分布式版本控制系统,作为一个程序员,我们需要掌握其用法. 一:下载GitHub for Windows 2.0 二:安装GitHub  下载之后点击进行安装过程,安装之后桌面上会有 ...

  5. 清除svn账户账号密码

    1. 2. 3. 4. 5.再次访问时,会弹出要求输入用户名和密码:只是清除记住的用户名和密码.

  6. Android使用SAX解析XML(3)

    主界面MainActivity.java: package com.hzhi.my_sax; import java.util.ArrayList; import android.os.Bundle; ...

  7. JPHP最新进展 v0.6

    项目地址:https://github.com/jphp-compiler/jphp 旧文:http://www.cnblogs.com/x3d/p/3631386.html 旧文2:http://w ...

  8. scala泛函编程是怎样被选中的

    现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求:无论处理器变得能跑多快,都无法满足软件对计算能力的需要.按照摩尔定律(Moore's Law)处理器(CPU)每平方面积上包含的半导体 ...

  9. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  10. activiti工作流的web流程设计器整合视频教程

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...