java基础9(IO流)-File类

本文详细介绍Java中File类的使用方法,包括构造方法、创建、删除、重命名、判断功能及获取功能等,并通过多个示例代码展示如何遍历目录、批量修改文件名、递归输出特定格式文件及递归删除目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File类

File:文件和目录路径名的抽象表示形式。即java中把文件或者目录都封装成File对象

代码练习1

import java.io.File;

public class FileDemo1{
    public static void main(String[] args){
             //将路径封装成一个file对象
        File file = new File("/home/hadoop/javatest/wujiadong1.txt");
        System.out.println(file);
    }
}
---------------------------------------
输出结果
/home/hadoop/javatest/wujiadong1.txt
---------------------------------------
File类构造方法

代码练习2

import java.io.File;

public class FileDemo1{
    public static void main(String[] args){
        //方式1
        File file1 = new File("/home/hadoop/javatest/wujiadong1.txt");
        //方式2
        File file2 = new File("/home/hadoop/javatest","wujiadong1.txt");
        //方式3
        File file3 = new File("/home/hadoop/javatest");
        File file4 = new File(file3,"wujiadong1.txt");
    
        System.out.println(file1);
        System.out.println(file2);
        System.out.println(file3);
        System.out.println(file4);
    }
}
-----------------------------------------------
输出结果
/home/hadoop/javatest/wujiadong1.txt
/home/hadoop/javatest/wujiadong1.txt
/home/hadoop/javatest
/home/hadoop/javatest/wujiadong1.txt
-----------------------------------------------------
创建功能

代码练习3

import java.io.File;
import java.io.IOException;

public class FileDemo{
    public static void main(String[] args) throws IOException {
        //根据一个路径得到File对象
        File file = new File("/home/hadoop/a.txt");
        File file2 =new File("/home/hadoop","b.txt"); 
        File file3 = new File("/home/hadoop");
        File file4 = new File(file3,"c.txt");

        File file5 = new File("/home/hadoop/aaa");
        File file6 = new File("/home/hadoop/bbb/ccc/ddd");  
    
             //创建文件
        System.out.println(file.createNewFile());   
        System.out.println(file2.createNewFile());
        System.out.println(file4.createNewFile());

        System.out.println(file5.mkdir());//创建一级目录
        System.out.println(file6.mkdirs());//创建多级目录
    }
}
删除功能

代码练习4

import java.io.File;
import java.io.IOException;

public class FileDemo{
    public static void main(String[] args) throws IOException {
        //根据一个路径得到File对象
        File file = new File("/home/hadoop/a.txt");

        file.delete();//注意只能删除文件或单级目录
    }
}


重命名功能

代码练习5

import java.io.File;
import java.io.IOException;

public class FileDemo{
    public static void main(String[] args) throws IOException {
        //根据一个路径得到File对象
        File file = new File("/home/hadoop/a.txt");
        file.createNewFile();

        File file1 = new File("/home/hadoop/wujiadong.txt");
        file.renameTo(file1);
    }
}
判断功能

代码练习6

import java.io.File;
import java.io.IOException;

public class FileDemo{
    public static void main(String[] args) throws IOException {
        //根据一个路径得到File对象
        File file = new File("/home/hadoop/a.txt");
        file.createNewFile();

        File file1 = new File("/home/hadoop/wujiadong.txt");
        file.renameTo(file1);

        System.out.println("isDirectory:"+file1.isDirectory());
        System.out.println("isFile:"+file1.isFile());
        System.out.println("exists:"+file1.exists());
        System.out.println("canRead:"+file1.canRead());
        System.out.println("canWrite:"+file1.canWrite());
        System.out.println("isHidden:"+file1.isHidden());
    }
}
-----------------------------------
输出结果
isDirectory:false
isFile:true
exists:true
canRead:true
canWrite:true
isHidden:false
----------------------------------

获取功能

代码练习7

import java.io.File;
import java.io.IOException;

public class FileDemo{
    public static void main(String[] args) throws IOException {
        //根据一个路径得到File对象
        File file = new File("/home/hadoop/a.txt");
        file.createNewFile();

        System.out.println("getAbsolutePath:"+file.getAbsolutePath());//绝对路径
        System.out.println("getPath:"+file.getPath());//相对路径
        System.out.println("getName:"+file.getName());//名称
        System.out.println("length:"+file.length());//大小
        System.out.println("lastModified:"+file.lastModified());//获取最后一次修改时间,毫秒值
    }
}
-------------------------------
输出结果
getAbsolutePath:/home/hadoop/a.txt
getPath:/home/hadoop/a.txt
getName:a.txt
length:0
lastModified:1480772014000
---------------------------------
高级获取功能(重点)

代码练习8

import java.io.File;

public class FileDemo{
    public static void main(String[] args){
        //指定一个目录
        File file = new File("/home/hadoop/javatest");
        
        //public String[] list():获取指定目录下的所有文件夹的名称数组
        String[] strArray = file.list();//只列出文件名称
        
        for(String s:strArray){
            System.out.println(s);
        }

        System.out.println("---------");

        //public File[] listFiles():获取指定目录下的所有文件夹的File数组
        File[] fileArray = file.listFiles();//文件详细路径和名称
        for(File f:fileArray){
            System.out.println(f.getName());
        }
    }
}


练习:判断目录/home/hadoop下是否有后缀名为.txt的文件,如果有,就输出此文件名称

代码练习9

/*
 * 判断目录/home/hadoop下是否有后缀名为.txt的文件,如果有,就输出此文件名称
 * 封装目录;遍历文件或目录;判断获取到的是否是文件;是否以.txt结尾 
 
 */

import java.io.File;

public class FileDemo1{
    public static void main(String[] args){
        File file = new File("/home/hadoop");

        //获取该目录下所有文件或者文件夹的File数组
        File[] fileArray = file.listFiles();

        for(File f:fileArray){
            //判断是否是文件
            if(f.isFile()){
                //判断是否以.txt结尾
                if(f.getName().endsWith(".txt")){
                    System.out.println(f.getName());
                }   
            }
        }
    }
}
 
-------------------------------------------------
输出结果
c.txt
b.txt
a.txt
wujiadong.txt
-----------------------------------------------

代码练习10
方法二(使用过滤器)

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo1{
    public static void main(String[] args){
        File file = new File("/home/hadoop");
        
        File[] fileArr = file.listFiles(new MyFileFilter());//传递过滤器
        for(File f:fileArr){
            System.out.println(f);
        }
    }
}

//自定义类继承FilenameFilter过滤器接口
class MyFileFilter implements FilenameFilter{
    public boolean accept(File dir,String name){
        return name.endsWith(".txt");
    }
}


练习:获取/home/hadoop下的所有文件夹(过滤器)
import java.io.File;
import java.io.FileFilter;

public class FileDemo1{
    public static void main(String[] args){
        File file = new File("/home/hadoop");
        
        File[] fileArr = file.listFiles(new FileFilterByDir());//获取指定目录下的文件夹
        for(File f:fileArr){
            System.out.println(f);
        }
    }   
}


class FileFilterByDir implements FileFilter{
    public boolean accept(File pathname){
        return pathname.isDirectory();
    }
}
FilenameFilter与FileFilter的比较
  • FilenameFilter过滤器中的accept方法接受两个参数,一个是当前文件夹或文件夹所在路径,一个是当期文件或文件夹对象的名称
  • FileFilter过滤器中的accept方法接受一个参数,这个参数是当期文件或文件夹对象
  • 当需过滤文件名称时使用FilenameFilter;当需对当前文件或文件夹进行过滤,就可以使用FileFilter
练习:批量修改文件名

练习:递归输出指定目录下所有以.java格式结尾的文件

代码练习10

import java.io.File;
public class FilePathDemo{
    public static void main(String[] args){
        //封装目录
        File srcFolder = new File("/home/hadoop/javatest");
        getAllFilePath(srcFolder);
    }
        //递归功能
    private static void getAllFilePath(File srcFolder){
        File[] fileArray = srcFolder.listFiles();           

        //遍历
        for(File file:fileArray){
            if(file.isDirectory()){
                getAllFilePath(file);   
            }else{
                if(file.getName().endsWith(".java")){
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
    
}


练习:递归删除带内容的目录

代码练习11

import java.io.File;

public class FileDeleteDemo1{
    public static void main(String[] args){
        //封装目录
        File srcFolder = new File("/home/hadoop/javatest/test");
        
        deleteFolder(srcFolder);
    }

    private static void deleteFolder(File srcFolder){
        //获取所有文件或目录
        File[] fileArray = srcFolder.listFiles();
        
        //遍历
        for(File file:fileArray){
            if(file.isDirectory()){
                deleteFolder(file);
            }else{
                System.out.println("file.getName():"+file.delete());
            }
        }

        System.out.println("srcFolder.getName()"+srcFolder.delete());
    }

}

-------------------------------
这里需要注意的是fileArray不能等于null。
可以加入判断if(fileArray != null){}


递归:指在当前方法内调用自己的这种现象
public void show(){
    show();

}

注意事项

  • 递归一定要有限制条件
  • 递归次数不能太多
  • 构造方法不能递归使用

转载于:https://www.cnblogs.com/wujiadong2014/p/6151798.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值