import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class HomeWork04 {
public static void cutDirectory(File f1, File f2) {// f1:d:ruby\pro,f2:d,descFile:d:pro
// 1.获取f1的名称
String fileName = f1.getName();
// 2.创建出目标文件
File descFile = new File(f2, fileName);
// 3.判断目标文件是个文件还是个目录:但是因为目标文件不存在,所以不能直接调用方法,那么可以通过对f1的判断。
if (f1.isDirectory()) {// 如果是目录
if (!descFile.exists()) {// 如果不存在
// 创建文件夹
descFile.mkdirs();
}
}
// 4.遍历
if (descFile.isDirectory()) {
// 遍历该目录
File[] files = f1.listFiles();// pro
for (int i = 0; i < files.length; i++) {
// files[0]:android-->d:ruby\pro\android
// f2:d:pro
cutDirectory(files[i], descFile);
}
} else {
// 直接拷贝该文件
copyFile(f1, descFile);
}
// 5.删除
deleteDirectory(f1);
}
public static void deleteDirectory(File f1) {
if (f1 != null) {
if (f1.isDirectory()) {
File[] files = f1.listFiles();
for (int i = 0; i < files.length; i++) {
deleteDirectory(files[i]);
}
}
boolean b = f1.delete();
System.out.println(b ? f1 + "删除成功" : f1 + "删除失败");
}
}
public static void copyFile(File f1, File f2) {
// 拷贝文件
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(f1));
bos = new BufferedOutputStream(new FileOutputStream(f2));
byte[] bs = new byte[1024];
int len = 0;
while ((len = bis.read(bs)) != -1) {
bos.write(bs, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
// 剪切文件夹
File f1 = new File("D:\\Ruby\\pro");// 源文件
File f2 = new File("D:\\");// 目标文件
cutDirectory(f1, f2);
// File f3 = new File("D:\\Ruby\\pro\\chutian2.jpeg");
// System.out.println(f3.exists());
// System.out.println(f3.isFile());
// System.out.println(f3.isDirectory());
}
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class HomeWork04 {
public static void cutDirectory(File f1, File f2) {// f1:d:ruby\pro,f2:d,descFile:d:pro
// 1.获取f1的名称
String fileName = f1.getName();
// 2.创建出目标文件
File descFile = new File(f2, fileName);
// 3.判断目标文件是个文件还是个目录:但是因为目标文件不存在,所以不能直接调用方法,那么可以通过对f1的判断。
if (f1.isDirectory()) {// 如果是目录
if (!descFile.exists()) {// 如果不存在
// 创建文件夹
descFile.mkdirs();
}
}
// 4.遍历
if (descFile.isDirectory()) {
// 遍历该目录
File[] files = f1.listFiles();// pro
for (int i = 0; i < files.length; i++) {
// files[0]:android-->d:ruby\pro\android
// f2:d:pro
cutDirectory(files[i], descFile);
}
} else {
// 直接拷贝该文件
copyFile(f1, descFile);
}
// 5.删除
deleteDirectory(f1);
}
public static void deleteDirectory(File f1) {
if (f1 != null) {
if (f1.isDirectory()) {
File[] files = f1.listFiles();
for (int i = 0; i < files.length; i++) {
deleteDirectory(files[i]);
}
}
boolean b = f1.delete();
System.out.println(b ? f1 + "删除成功" : f1 + "删除失败");
}
}
public static void copyFile(File f1, File f2) {
// 拷贝文件
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(f1));
bos = new BufferedOutputStream(new FileOutputStream(f2));
byte[] bs = new byte[1024];
int len = 0;
while ((len = bis.read(bs)) != -1) {
bos.write(bs, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
// 剪切文件夹
File f1 = new File("D:\\Ruby\\pro");// 源文件
File f2 = new File("D:\\");// 目标文件
cutDirectory(f1, f2);
// File f3 = new File("D:\\Ruby\\pro\\chutian2.jpeg");
// System.out.println(f3.exists());
// System.out.println(f3.isFile());
// System.out.println(f3.isDirectory());
}
}
GitHub: https://github.com/HuaDanJson