------- android培训、java培训、期待与您交流! ----------
package cn.itcast.a_backup;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class TestBackup {
public static void main(String[] args) throws IOException {
File dir = getDir();
System.out.println(dir);
listAllFiles(dir);
}
/**
* 获取指定目录中所有的.java 文件. 第一点: 找到所有文件 第二点: 找到后缀名是.java 的文件. 如果是目录: 进入目录使用递归查找
*
* @param dir
* @throws IOException
*/
private static void listAllFiles(File dir) throws IOException {
// 获取指定目录中所有的子文件和子目录
File[] listFiles = dir.listFiles();
for (File f : listFiles) {
// 如果是目录,继续调用自己. 直到目录中没有子目录了.
if (f.isDirectory()) {
listAllFiles(f);
} else if (f.isFile() && f.getName().endsWith(".java")) {
cpoyFile(f);
}
}
}
/**
* 拷贝.java 文件. 备份, 就是使用IO流拷贝文件.只不错备份文件后缀名需要特殊的标示 .bak
*
* @param f
* @throws IOException
*/
private static void cpoyFile(File f) throws IOException {
// Demo1.java ->Demo1.bak
// 获取需要备份的源文件的前缀名.
String srcStartName = f.getName().substring(0,
f.getName().lastIndexOf("."));
// 根据源文件的前缀名生成备份文件的文件名.
String destFileName = srcStartName + ".bak";
// 指定备份文件保存的路径
File backupDir = new File("e:\\javaFiles");
// 检测该目录是否存在,如果不存在初始化一个
if (!backupDir.exists()) {
backupDir.mkdir();
}
// 拷贝文件.
// 使用字节输入流封装源文件.
FileInputStream fis = new FileInputStream(f);
// 创建字节输出流,保存读取的数据.实现备份
FileOutputStream fos = new FileOutputStream(new File(backupDir,
destFileName));
// 读取源文件.
byte[] datas = new byte[1024];
int len;
while ((len = fis.read(datas)) != -1){
fos.write(datas, 0, len);
}
// 关闭流
fis.close();
fos.close();
}
/**
* 控制台获取有效的目录.
*
* @return
*/
private static File getDir() {
// 控制台获取用户输入的一个目录
Scanner sc = new Scanner(System.in);
String filePath;
File dir;
while (true) {
System.out.println("请输入目录:");
filePath = sc.next();
dir = new File(filePath);
// 检测目录是否存在
if (!dir.exists()) {
System.out.println("目录不存在...");
continue; // 结束本次,继续下一次
}
// 检测是否是文件.
if (!dir.isDirectory()) {
System.out.println("请输入有效的目录");
continue;
}
break;
}
return dir;
}
}
package cn.itcast.b_backup;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class BackupJavaFile1 {
public static void main(String[] args) throws IOException {
File dir = getFile();
listAllFile(dir);
}
private static File getFile() {
Scanner sc = new Scanner(System.in);
File dir;
while (true) {
System.out.println("请输入路径:");
String next = sc.next();
dir = new File(next);
if (!dir.exists()) {
System.out.println("目录不存在");
continue;
} else if (dir.isFile()) {
System.out.println("请输入目录:");
continue;
} else {
break;
}
}
return dir;
}
public static void listAllFile(File dir) throws IOException {
File[] listFiles = dir.listFiles();
for (File f : listFiles) {
if (f.isDirectory()) {
listAllFile(f);
} else if (f.isFile() && f.getName().endsWith(".java")) {
backupFile(f);
}
}
}
private static void backupFile(File f) throws IOException {
String srcStartName = f.getName().substring(0,
f.getName().lastIndexOf("."));
FileInputStream fis = new FileInputStream(f);
File dir = new File("e:\\java笔记");
if (!dir.exists()) {
dir.mkdir();
}
File[] listFiles = dir.listFiles();
System.out.println(listFiles.length);
String destStartName;
String backUpFileName;
String[] split = f.getParent().split("\\\\");
backUpFileName = srcStartName + "_" + split[split.length - 1] + ".txt";
FileOutputStream fos = new FileOutputStream(new File(dir,
backUpFileName));
byte[] datas = new byte[1024];
int len;
while ((len = fis.read(datas)) != -1) {
fos.write(datas, 0, len);
}
fis.close();
fos.close();
}
}