删除文件夹和复制文件夹 java

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


import org.junit.Test;


public class TestDemo {


/**
* 删除一个文件夹
* @param filepath
*/
public void deleteFile(String filepath){

File file = new File(filepath);
if(file.exists()){
if(file.isDirectory()&&file.listFiles().length!=0){
File [] files = file.listFiles();
for(File f :files){
deleteFile(f.getAbsolutePath());
f.delete();
}

}else{
file.delete();
}
file.delete();
}else{
return ;
}
}
/**复制文件夹

* @param path1
* @param path2
*/
public void copyFiles(String path1,String path2){
File file = new File(path1);
if(file.exists()){
/**
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
*/
if(file.isDirectory()&&file.listFiles().length!=0){
File file2 = new File(path2);
if(!file2.exists())
file2.mkdir();
for(File f : file.listFiles()){
if(f.isDirectory()){
copyFiles(f.getAbsolutePath(), path2+"/"+f.getName());
}else{
copyFile(f.getAbsolutePath(), path2+"/"+f.getName());
}
}
}else{
copyFile(path1, path2);
}
}else{
return;
}
}
/**
* 复制单个文件的方法
* @param filepath
* @param filepath2
*/
public void copyFile(String filepath,String filepath2){
try {
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(filepath))));
byte[] data = new byte[in.available()];
in.read(data);
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filepath2))));
out.write(data);


in.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
@Test
public void testFile(){
//deleteFile("D:\\迅雷下载\\风云1945");
//copyFiles("F:\\360Downloads", "D:\\abc");
System.out.println(new File("D://tlxw.sql").listFiles().length);
}
}

你可能感兴趣的:(Java基础)