java 文件File操作
##############################################################
java的File类常用方法:
import java.io.File;
import java.io.IOException;
File file1=new File("config/");
File file2=new File("config/");
创建:
createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。
file1.createNewFile();
mkdir() 在指定位置创建一个单级文件夹。
file1.mkdir();
mkdirs() 在指定位置创建一个多级文件夹。
file1.mkdirs();
renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。
file1.renameTo(file2);
删除:
delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
file1.delete();
deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。
file1.deleteOnExit();
判断:
exists() 文件或文件夹是否存在。
file1.exists();
isFile() 是否是一个文件,如果不存在,则始终为false。
file1.isFile();
isDirectory() 是否是一个目录,如果不存在,则始终为false。
file1.isDirectory();
isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
file1.isHidden();
isAbsolute() 测试此抽象路径名是否为绝对路径名。
file1.isAbsolute();
获取:
getName() 获取文件或文件夹的名称,不包含上级路径。
file1.getName();
getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
file1.getAbsolutePath();
length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
file1.length();
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
file1.getParent();
lastModified()获取最后一次被修改的时间。
file1.lastModified();
文件夹相关:
static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
File[] file3=File.listRoots();
list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
file1.list();
listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
file1.listFiles();
list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
listFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
#######################################################
package javaTest01;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class GetFiles {
ArrayList<File> fileList=new ArrayList<File>();
/**
* 获取目录下所有文件
* @param file
* @return
*/
public List<File> getFiles(File file){
File[] fileArr=file.listFiles();
for (File ele : fileArr) {
if (ele.isDirectory()) {
//getFiles(ele); //相对file的相对路径
getFiles(new File(ele.getAbsolutePath())); //绝对路径
} else {
//fileList.add(ele);
fileList.add(new File(ele.getAbsolutePath()));
}
}
//stream对集合进行过滤
List<File> fileListFilter=fileList.stream() //Collection对象转换成Stream
.filter(x -> (x.toString().endsWith(".txt") && x.toString().startsWith("E") )|| x.toString().endsWith(".json")) //过滤后只保留 ①后缀名为.txt且开头为E ②后缀名为.json
.collect(Collectors.toList());
return fileListFilter;
}
ArrayList<Object> dirList=new ArrayList<Object>();
public List<Object> getDirs(File file){
File[] fileArr=file.listFiles();
for(File ele:fileArr){
if(ele.isDirectory()){
//dirList.add(ele); //相对file的相对路径
dirList.add(ele.getAbsolutePath()); //绝对路径
getDirs(ele);
}
}
return dirList;
}
public static void main(String[] args){
File dir=new File("config");
List<File> result=new GetFiles().getFiles(dir);
System.out.println("Number of all files: "+result.size());
for(Object ele : result){
System.out.println(ele);
}
List<Object> result2=new GetFiles().getDirs(dir);
System.out.println("Number of all dirs: "+result2.size());
for(Object ele : result2){
System.out.println(ele);
}
}
}