Java对IO操作
1.拷贝指定目录下的文件夹、文件
2.遍历文件目录树
3.删除指定目录下的文件夹、文件
package demo.test.io;
import java.io.*;
public class FileIOTest {
public static void main(String[] args) throws IOException {
File source = new File("F:\\develop\\ideaCode\\project-product\\WebRoot\\WEB-INF\\lib");
File dest = new File("G:\\压缩\\测试\\lib");
fileCopy(source,dest);
/*File file = new File("F:\\develop\\ideaCode\\project-product\\artifacts\\project-product");
deleteFile(file);*/
}
public static void fileCopy(File file1,File file2){
File[] files1 = file1.listFiles();
for (int i = 0; i < files1.length; i++) {
if (files1[i].isDirectory()){
String s = files1[i].getName();
File file = new File(file2.getPath()+"/"+s);
file.mkdir();
System.out.println(file2.getPath()+"/"+s);
fileCopy(files1[i],file);
}else if (files1[i].isFile()){
String s = files1[i].getName();
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(files1[i].getPath()+"")));
//bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2.getPath()+"/"+s)));
/**
* 下面方法是更改文件后缀名
*/
String type = null;
if(s.endsWith(".jar")){
type = s.replace(".jar",".jsp");
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2.getPath()+"/"+type)));
}else{
type = s;
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2.getPath()+"/"+type)));
}
/*String temp;
while(true){
temp = br.readLine();
if (temp != null){
bw.write(temp);
bw.newLine();
temp = br.readLine();
}else{
break;
}
}*/
String temp = br.readLine();
while(temp != null){
bw.write(temp);
bw.newLine();
temp = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}if (bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* 用来打印出遍历到的文件或文件夹的绝对路径
* @param file 代表文件或文件夹
*/
public static void showFile(File file){
//判断如果file是一个文件夹,文件夹内有元素,找一个人先做
File[] files = file.listFiles();//获取file的子元素
/**
* 必须使用短路与:&&,先判断file!=null,
* 如果为空,后面那个条件不用判断,直接false,
* 避免空指针异常
*/
if (files!=null && files.length!=0){
for (File f:files){
showFile(f);
}
}
//当file是一个文件或一个空的文件夹,就打印它的绝对路径
System.out.println(file.getAbsolutePath());
}
/**
* 用来删除一个文件夹
* @param file 代表文件或文件夹
*/
public static void deleteFile(File file){
//判断如果file是一个文件夹,文件夹内有元素,找一个人先做
File[] files = file.listFiles();//获取file的子元素
/**
* 必须使用短路与:&&,先判断file!=null,
* 如果为空,后面那个条件不用判断,直接false,
* 避免空指针异常
*/
if (files!=null && files.length!=0){
for (File f:files){
deleteFile(f);
}
}
//当file是一个文件或一个空的文件夹,就删除它
file.delete();
}
}