java迁移文件下的文件_用java实现的文件和文件夹拷贝和转移 | 学步园

package com.cnblogs.zxub.upload;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

public class test {

/**

* 移动指定文件或文件夹(包括所有文件和子文件夹)

*

* @param fromDir

* 要移动的文件或文件夹

* @param toDir

* 目标文件夹

* @throws Exception

*/

public static void MoveFolderAndFileWithSelf(String from, String to) throws Exception {

try {

File dir = new File(from);

// 目标

to += File.separator + dir.getName();

File moveDir = new File(to);

if(dir.isDirectory()){

if (!moveDir.exists()) {

moveDir.mkdirs();

}

}else{

File tofile = new File(to);

dir.renameTo(tofile);

return;

}

//System.out.println("dir.isDirectory()"+dir.isDirectory());

//System.out.println("dir.isFile():"+dir.isFile());

// 文件一览

File[] files = dir.listFiles();

if (files == null)

return;

// 文件移动

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

System.out.println("文件名:"+files[i].getName());

if (files[i].isDirectory()) {

MoveFolderAndFileWithSelf(files[i].getPath(), to);

// 成功,删除原文件

files[i].delete();

}

File moveFile = new File(moveDir.getPath() + File.separator + files[i].getName());

// 目标文件夹下存在的话,删除

if (moveFile.exists()) {

moveFile.delete();

}

files[i].renameTo(moveFile);

}

dir.delete();

} catch (Exception e) {

throw e;

}

}

/**

* 复制单个文件(可更名复制)

* @param oldPathFile 准备复制的文件源

* @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名)

* @return

*/

public static void CopySingleFile(String oldPathFile, String newPathFile) {

try {

int bytesum = 0;

int byteread = 0;

File oldfile = new File(oldPathFile);

if (oldfile.exists()) { //文件存在时

InputStream inStream = new FileInputStream(oldPathFile); //读入原文件

FileOutputStream fs = new FileOutputStream(newPathFile);

byte[] buffer = new byte[1444];

while ((byteread = inStream.read(buffer)) != -1) {

bytesum += byteread; //字节数 文件大小

//System.out.println(bytesum);

fs.write(buffer, 0, byteread);

}

inStream.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 复制单个文件(原名复制)

* @param oldPathFile 准备复制的文件源

* @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名)

* @return

*/

public static void CopySingleFileTo(String oldPathFile, String targetPath) {

try {

int bytesum = 0;

int byteread = 0;

File oldfile = new File(oldPathFile);

String targetfile = targetPath + File.separator + oldfile.getName();

if (oldfile.exists()) { //文件存在时

InputStream inStream = new FileInputStream(oldPathFile); //读入原文件

FileOutputStream fs = new FileOutputStream(targetfile);

byte[] buffer = new byte[1444];

while ((byteread = inStream.read(buffer)) != -1) {

bytesum += byteread; //字节数 文件大小

//System.out.println(bytesum);

fs.write(buffer, 0, byteread);

}

inStream.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 复制整个文件夹的内容(含自身)

* @param oldPath 准备拷贝的目录

* @param newPath 指定绝对路径的新目录

* @return

*/

public static void copyFolderWithSelf(String oldPath, String newPath) {

try {

new File(newPath).mkdirs(); //如果文件夹不存在 则建立新文件夹

File dir = new File(oldPath);

// 目标

newPath += File.separator + dir.getName();

File moveDir = new File(newPath);

if(dir.isDirectory()){

if (!moveDir.exists()) {

moveDir.mkdirs();

}

}

String[] file = dir.list();

File temp = null;

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

if (oldPath.endsWith(File.separator)) {

temp = new File(oldPath + file[i]);

} else {

temp = new File(oldPath + File.separator + file[i]);

}

if (temp.isFile()) {

FileInputStream input = new FileInputStream(temp);

FileOutputStream output = new FileOutputStream(newPath +

"/" +

(temp.getName()).toString());

byte[] b = new byte[1024 * 5];

int len;

while ((len = input.read(b)) != -1) {

output.write(b, 0, len);

}

output.flush();

output.close();

input.close();

}

if (temp.isDirectory()) { //如果是子文件夹

copyFolderWithSelf(oldPath + "/" + file[i], newPath);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

test databean=new test();

//File fl=new File("F:\\111\\222\\333\\444\\");

//fl.mkdirs();//可以直接建立多级目录

//databean.MoveFolderAndFileWithSelf("F:\\JBuilder 2006 开发J2EE服务器应用程序.pdf","J:\\J\\");

//databean.MoveFolderAndFileWithSelf("F:\\test","J:\\J\\www");

databean.CopySingleFile("F:\\JBuilder 2006 开发J2EE服务器应用程序.pdf","J:\\J\\JBuilder 2006 开发J2EE服务器应用程序.pdf");

//databean.copyFolderWithSelf("F:\\test","J:\\J\\www");

System.out.println("完成");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值