文件拷贝java代码_常用的java函数(十一)文件拷贝代码

import java.io.*;

import java.util.ArrayList;

import java.util.List;

public class FileCopy {

private String message = "";

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

/**

* 将源文件拷贝到目标文件

*

* @param src

* 写源文件地址,需文件名

* @param des

* 写目标文件地址,无需文件名

*/

public boolean copyFile(String src, String des) {

File srcFile = new File(src);

File desDir = new File(des);

File desFile = new File(des + "/" + srcFile.getName());

// 判断源文件是否存在

if (!srcFile.exists()) {

this.setMessage("源文件不存在!");

return false;

} else if (!srcFile.isFile()) {

this.setMessage("源文件格式错!");

return false;

}

// 判断源文件是否存在

if (!desDir.exists()) {

this.setMessage("目标目录不存在!");

return false;

} else if (!desDir.isDirectory()) {

this.setMessage("不是有效的目录!");

return false;

}

BufferedReader reader = null;

BufferedWriter writer = null;

String str;

try {

reader = new BufferedReader(new FileReader(srcFile));

writer = new BufferedWriter(new FileWriter(desFile));

// 判断目标文件是否存在及其格式,不存在就创建,格式不对先删除,存在就替代

if (!desFile.exists() || !desFile.isFile()) {

if (desFile.exists()) {

desFile.delete();

}

desFile.createNewFile();

}

// 从源文件读取数据,并写入目标文件

str = reader.readLine();

while (str != null) {

writer.write(str);

writer.newLine();

str = reader.readLine();

}

} catch (IOException e) {

this.setMessage(e.getMessage());

return false;

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e) {

this.setMessage(e.getMessage());

}

}

if (writer != null) {

try {

writer.close();

} catch (IOException e) {

this.setMessage(e.getMessage());

}

}

}

return true;

}

private List fileList = new ArrayList();

/**

* 列出所有文件

* @param srcFile

*/

private void file(File srcFile) {

if (srcFile.isDirectory()) {

String[] files = srcFile.list();

for (int i = 0; i < files.length; i++) {

File f = new File(srcFile + "/" + files[i]);

// 如果是文件加入列表,否则递归列出

if (f.isFile()) {

fileList.add(f);

} else

file(f);

}

}else this.setMessage(srcFile.getAbsolutePath()+"不是目录");

}

/**

* 建立目录

* @param des

* @throws IOException

*/private void mkdir(File des) {

if (!des.exists() || !des.isDirectory()) {

mkdir(des.getParentFile());

if (des.exists()) {

des.delete();

}

des.mkdir();

}

}

/**

* 复制目录 将源目录下所有文件拷贝到目标目录下

* @param src 源目录

* @param des 目标目录

*/

public boolean copyDir(String src, String des) {

File srcFile = new File(src);

if (!srcFile.exists()) {

this.setMessage("源目录不存在!");

return false;

} else if (!srcFile.isDirectory()) {

this.setMessage(src+"不是有效的目录!");

return false;

}

file(srcFile);

for (int i = 0; i < fileList.size(); i++) {

String srcName = ((File) fileList.get(i)).getPath();

String desName = srcName.substring(src.length(), srcName.length());

desName = des + desName;

File dir=new File(desName).getParentFile();

mkdir(dir);

if(!copyFile(srcName, dir.getPath())){

return false;

}

}

return true;

}

public static void main(String[] args) {

FileCopy t = new FileCopy();

System.out.println(t.copyFile("D:/aaa.txt","E:"));

String src="D:/asdf";

String des="E:/adf";

System.out.println(t.copyDir(src, des));

System.out.println(t.getMessage());

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-08-04 18:49

浏览 2524

评论

1 楼

casheen

2008-12-16

import java.io.File;

import org.apache.tools.ant.Project;

import org.apache.tools.ant.taskdefs.Copy;

public class FileUtils {

public static void copyToFile(String srcFile, String destFile) {

Project project = new Project();

Copy copy = new Copy();

copy.setProject(project);

copy.setFile(new File(srcFile));

copy.setTofile(new File(destFile));

copy.execute();

}

public static void copyToDir(String srcFile, String destDir) {

Project project = new Project();

Copy copy = new Copy();

copy.setProject(project);

copy.setFile(new File(srcFile));

copy.setTodir(new File(destDir));

copy.execute();

}

public static void main(String[] args) {

copyToFile("c:/aaa.txt", "d:\\b.txt");

copyToDir("c:/aaa.txt", "d:\\dir");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值