目录
目标
了解java.io.File类常用的方法。
方法集锦
使用到的常量
//文件
public static final String MY_FILE = "C:\\Users\\huangshang\\Desktop\\demo\\es.txt";
//文件2
public static final String MY_FILE_TWO = "C:\\Users\\huangshang\\Desktop\\demo\\logs\\es.txt";
//文件夹
public static final String MY_DIR = "C:\\Users\\huangshang\\Desktop\\demo";
//文件夹2
public static final String MY_DIR_TWO = "C:\\Users\\huangshang\\Desktop\\demo\\config";
获取文件的绝对路径
public void getAbsoluteFilePath() throws IOException {
File file = new File(MY_FILE);
//返回File类型
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
//返回String类型
String absolutePath = file.getAbsolutePath();
System.out.println(absolutePath);
}
获取文件和文件夹名称
public void getFileName() {
File file = new File(MY_FILE);
String name = file.getName();
System.out.println(name);
}
获取文件所在目录
public void getParentFile() {
File file = new File(MY_FILE_TWO);
//返回String类型
String name = file.getParent();
System.out.println(name);
//返回File类型
File parentFile = file.getParentFile();
System.out.println(parentFile);
}
创建文件
public void createFile() throws IOException {
File file = new File(MY_FILE);
file.createNewFile();
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
}
创建文件夹
public void createDir(){
File file = new File(MY_DIR_TWO);
file.mkdir();
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
}
删除文件或文件夹
public void deleteFile() {
File file = new File(MY_DIR_TWO);
file.delete();
}
判断文件或文件夹是否存在
public void isExist(){
File myFile = new File(MY_FILE);
File myDir = new File(MY_DIR);
System.out.println(myFile.exists());
System.out.println(myDir.exists());
}
判断是否是文件夹
public void isDir(){
File myFile = new File(MY_FILE);
File myDir = new File(MY_DIR);
System.out.println(myDir.isDirectory());
System.out.println(myFile.isDirectory());
}
判断是否是文件
public void isDir(){
File myFile = new File(MY_FILE);
File myDir = new File(MY_DIR);
System.out.println(myFile.isFile());
System.out.println(myDir.isFile());
}
判断是否是隐藏文件
public void isHidden(){
File myFile = new File(MY_FILE);
File myDir = new File(MY_DIR);
System.out.println(myFile.isHidden());
System.out.println(myDir.isHidden());
}
查询文件和文件夹最后修改的时间
public void lastModified(){
File myFile = new File(MY_FILE);
File myDir = new File(MY_DIR);
System.out.println(getFormatDate(myFile.lastModified()));
System.out.println(getFormatDate(myDir.lastModified()));
}
public String getFormatDate(long time){
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(date);
return dateString;
}
查询文件内容的字节数量
public void fileSize(){
File myFile = new File(MY_FILE);
System.out.println(myFile.length());
}
获取当前目录下所有文件名称和文件夹名称
public void fileNameArr(){
File dir = new File(MY_DIR);
String[] arr = dir.list();
for (String s : arr) {
System.out.println(s);
}
}
获取当前目录下所有文件和文件夹的全路径
public void fileAbsolutePathArr(){
File dir = new File(MY_DIR);
File[] files = dir.listFiles();
for (File s : files) {
System.out.println(s.getAbsolutePath());
}
}
筛选出当前目录下所有符合过滤器的文件
public void filefilter(){
File dir = new File(MY_DIR);
String[] arr = dir.list(new FilenameFilter() {
/**
*
* @param dir 文件所在的目录。
* @param name 文件的名称。
* @return
*/
@Override
public boolean accept(File dir, String name) {
//筛选出txt格式的文件
if(name.endsWith(".txt")){
System.out.println("文件过滤器筛选出符合条件的文件:"+dir+"\\"+name);
return true;
}
return false;
}
});
for (String s : arr) {
System.out.println(s);
}
}
获取当前目录及所有子目录下的所有文件
public List getAllFilesByDir(List<File> list, File file){
if(file.isFile()){
list.add(file);
}else{
File[] files = file.listFiles();
if(files !=null&& files.length>0){
for (File f : files) {
getAllFilesByDir(list,f);
}
}
}
return list;
}
获取当前目录及所有子目录下的所有文件夹
public List getAllDirs(List<File> list, File file){
if(file.isDirectory()){
list.add(file);
File[] files = file.listFiles();
if(files !=null&& files.length>0){
for (File f : files) {
getAllDirs(list,f);
}
}
}else{
return new ArrayList();
}
return list;
}
获取目录下所有的叶子目录
public List getAllEndDirs(List<File> list, File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files ==null || files.length==0){
list.add(file);
}else{
boolean boo=true;
for (int i=0;i<files.length;i++) {
if(files[i].isDirectory()){
break;
}else if(i==files.length-1){//遍历该目录,发现都是文件,而没有文件夹。
boo=false;
list.add(file);
}
}
if(boo){
for (File f : files) {
if(f.isDirectory()){
getAllEndDirs(list,f);
}
}
}
}
}else{
return new ArrayList();
}
return list;
}
获取目录下所有的空叶子目录
public List getAllIsNullEndDirs(List<File> list, File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files !=null && files.length>0){
for (File f : files) {
if(f.isDirectory()){
getAllIsNullEndDirs(list,f);
}
}
}else{
list.add(file);
}
}else{
return new ArrayList();
}
return list;
}
获取目录下所有的非空叶子目录
public List getAllIsNotNullEndDirs(List<File> list, File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files !=null && files.length>0){
boolean boo=true;
for (int i=0;i<files.length;i++) {
if(files[i].isDirectory()){
break;
}else if(i==files.length-1){//遍历该目录,发现都是文件,而没有文件夹。
boo=false;
list.add(file);
}
}
if(boo){
for (File f : files) {
if(f.isDirectory()){
getAllIsNotNullEndDirs(list,f);
}
}
}
}
}else{
return new ArrayList();
}
return list;
}