package yingjun.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.Test;
public class TestFile {
//创建文件、文件夹
@Test
public void addFile() throws IOException{
//File file=new File("D:/test/testfile/"+"filename.txt");
File file=new File("D:/test/testfile/","filename.txt");
if(!file.getParentFile().exists()){ //如果该文件路径不存在就创建该路径
file.getParentFile().mkdirs();
}
if(!file.exists()) { //指定路径下的filename.txt文件要是不存在就创建
file.createNewFile();
}
}
//删除文件
@Test
public void deleteFile(){
File file=new File("D:/test/testfile/"+"filename.txt");
if(file.exists()&&file.isFile())
file.delete();
}
//删除文件目录
@Test
public void deleteFileDir(){
RecursionDel("D:/test/"); //采用递归删除test目录下的的所有文件(包括test)
}
private void RecursionDel(String path){
File dir=new File(path);
if(dir.exists()){
File[] tmp=dir.listFiles();
for(int i=0;i<tmp.length;i++){
if(tmp[i].isDirectory()){
RecursionDel("D:/test/"+tmp[i].getName());
}else{
tmp[i].delete();
}
}
dir.delete();
}
}
//复制文件
@Test
public void copyFile() throws IOException{
FileInputStream in=new FileInputStream("D:/test/testfile/filename.txt"); //要拷贝的文件目录
File file=new File("D:/test/filename.txt"); //拷贝到的文件目录
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream out=new FileOutputStream(file);
int c;
byte buffer[]=new byte[1024];
while((c=in.read(buffer))!=-1){
for(int i=0;i<c;i++)
out.write(buffer[i]);
}
in.close();
out.close();
}
//剪切文件
@Test
public void copyFileDir() throws IOException{
File oldfold=new File("D:/test/testfile/lala/asd.txt");
File newfold=new File("D:/test/asd.txt");
Boolean cover=true;//用于判断是否覆盖
if(newfold.exists()){ //若在待转移目录下,已经存在待转移文件
if(cover){//覆盖
oldfold.renameTo(newfold);
}else
System.out.println("在新目录下已经存在");
}else{
oldfold.renameTo(newfold);
}
}
//文件重命名
@Test
public void renameFile(){
File oldfile=new File("D:/test/filename.txt");
File newfile=new File("D:/test/newfilename.txt");
if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名
System.out.println("已经存在!");
else{
oldfile.renameTo(newfile);
}
}
//采用递归的方法遍历某个文件夹下的所有文件.
@Test
public void listFile(){
File f = new File("d:/test");
fileList(f);
}
private static void fileList(File f) {
File[] childs = f.listFiles();
for(int i=0; i<childs.length; i++) {
if(childs[i].isDirectory()) {
fileList(childs[i]);
}else{
System.out.println(childs[i].getAbsolutePath());
}
}
}
}