copyfile java_java实现文件复制到另一个地方

package com.qzkj.IO;

/**

* 文件复制

*/

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

public class CopyFile {

public static void main(String[] argc) {

CopyFile copy = new CopyFile();

// 方法参数为(起始路径,目标路径,文件后缀,文件名关键字, “*”表示所有文件)

copy.copyFils("f:\\java", "e:\\test", "txt", "*");

}

// 统计被扫描的文件个数

public int counter ;

/*

* 从起始地址复制指定后缀名的文件到目标地址

*/

public void copyFils(String start, String aim, String lastname,

String keyword) {

// 复制的文件计数

int count = 0;

// 调用outputFiles方法,得到指定后缀名的文件路径集合

List file = outputFiles(start, lastname);

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

// 获取文件路径

String path = file.get(i);

// 剪裁文件后缀,用来判断文件类型,是属于txt,java

String ename = path.substring(path.lastIndexOf("."));

//获取文件名

String newName = path.substring(path.lastIndexOf("\\") + 1,

path.lastIndexOf("."));//???????

// 所有文件都放到目标文件夹里

String aimPath = aim + "\\" + newName + "." + ename;//??????

// 判断文件名是否含有关键字

if (keyword.equals("*") || newName.indexOf(keyword) != (-1)) {

// 判断目标目录里是否存在同名的文件

if (new File(aimPath).exists()) {

// 存在同名则重命名

newName = newName + "(" + i + ")";

System.out.println("!!!存在重名文件,已重命名成:" + newName);

}

// 新路径

String newPath = aim + "\\" + newName + "." + ename;//?????

count++;

// 从起始文件复制到目标文件

copy(file.get(i), newPath);

System.out.println(newName + " ---复制成功");

}

}

System.out.println("\n从目录" + start + "总共复制了" + count + "个文件"

);

}

// 用来存放满足指定后缀名的所有文件的路径

List list = new ArrayList();

/*

* 查找文件夹里的所有相同扩展名的文件 传入文件夹目录和后缀名,返回list类型的符合条件的文件路径

*/

public List outputFiles(String path, String lastname) {

// 将路径转成一个文件类型

File file = new File(path);

// 返回目录中的文件 或者文件夹

File[] files = file.listFiles();

// 遍历文件或者文件夹

for (File f : files) {

// 判断是否是文件夹

if (f.isDirectory()) {

// 如果是文件夹则重新传入outputFile遍历

outputFiles(f.toString(), lastname);

} else if (lastname.equals("*")

|| f.getName().endsWith("." + lastname)) {

// 将完整的文件路径放入list容器里

list.add(f.getPath());

}

// 统计遍历的文件个数

counter++;

}

// 返回所有符合条件的文件路径集

return list;

}

/*

* 要复制的文件夹,和要复制到的目标文件夹 传入起始路径和目标路径

*/

public void copy(String start, String aim) {

int a = 0;

FileInputStream in = null;

FileOutputStream out = null;

try {

in = new FileInputStream(start);

out = new FileOutputStream(aim);

// 读起始路径文件

while ((a = in.read()) != -1) {

// 写入到目标路径文件

out.write(a);

}

// 关闭通道

in.close();

out.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值