Java中的文件File类

本文详细介绍了Java中文件的基本操作,包括文件的创建、删除、判断、获取等常见操作方法,并提供了多个示例代码帮助理解。

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

涉及到读写,除了键盘的输入,屏幕的输出显示,可能最多的就是关于文件的读写,很多场景中都会有关于文件读写的应用,比如数据的导出则涉及到写文件,还有图片的上传,则涉及到读取文件……当然,文件是存储在硬盘上的数据,可以为我们永久保存数据
下面来看看对于文件的操作:无非是创建文件,删除文件,判断文件,获取文件的某些属性以及如何获取文件的子文件及其子文件夹

文件的构造方法

import java.io.File;

/**
 * Created by Dream on 2017/11/1.
 */
/*
构造File类对象:
    new File(String pathname):通过将给定路径来创建一个新File实例。
    new File(String parent, String child):根据parent路径名字符串和child路径名创建一个新File实例。
                                            parent是指上级目录的路径,完整的路径为parent+child.
    new File(File parent, String child):根据parent抽象路径名和child路径名创建一个新File实例。
                                            parent是指上级目录的路径,完整的路径为parent.getPath()+child.
    说明:
        如果指定的路径不存在(没有这个文件或是文件夹),不会抛异常,这时file.exists()返回false。
*/
public class CreateFileTest {
    public static void main(String[] args){
        String pathName = "F:\\b.txt";
        File file = new File(pathName);
        System.out.println("文件是否存在?"+file.exists());
        String parent = "F:";
        File file2 = new File(parent,"del.txt");
        System.out.println("文件2是否存在?"+file2.exists());
        File parentFile = new File(parent);
        File file3 = new File(parentFile,"judge.txt");
        System.out.println("文件3是否存在?"+file3.exists());
    }
}

注意:
1:创建File对象需要导包, import java.io.File
2:File对象没有无参数构造.创建对象需要传参.根据API文档提示,传入一个文件的字符串路径. String path=”c:/a.txt”;(a.txt 文件在c盘下已经存在)
3.File类对象既可以代表文件,也可以代表文件夹
4.new一个File类对象,并不代表会创建一个文件或者文件夹,不管指定的路径是否存在,都可以创建任意文件名的File实例,至于是否真实存在,可以调用exists方法进行判断,返回true表示存在,否则不存在。

创建文件的方法:

package BasicObject.day19;

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

/**
 * Created by Dream on 2017/11/1.
 */
/*
创建:
        createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
        mkdir()         在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
        mkdirs()        在指定位置创建目录,这会创建路径中所有不存在的目录。
        renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。
        移动/重命名成功则返回true,失败则返回false。
*/
public class FileCreateTest {
    public static void  main(String[] args)throws IOException{
        File file = new File("F:\\b.txt");
        System.out.println("创建文件成功?"+file.createNewFile());
        File dir = new File("F:\\empty");
        System.out.println("创建文件夹成功?"+dir.mkdir());//创建的是单级目录,只能是文件夹,不能创建文件
        File dirs = new File("F:\\empty\\bbb\\cc\\dd");
        System.out.println("创建文件夹目录成功吗?"+dirs.mkdirs());  //创建多级目录,只能创建文件夹,不能创建文件

        /*同目录,实现的是重命名
        System.out.println("文件重命名成功吗?"+file.renameTo(new File("F:\\a.txt")));
        */
        /*不同目录,则将该文件剪切到目标目录,文件也被重命名
        System.out.println("文件重命名成功吗?改变目录:"+file.renameTo(new File("E:\\a.txt")));
        */
        /*同目录文件夹,即使为空文件夹,也可以成功重命名
        System.out.println("空文件夹重命名成功吗?同目录:"+dir.renameTo(new File("F:\\emp")));
        */
        /*不同目录,文件夹是不可剪切的,无论文件是否为空,只能是操作同目录的!*/
        System.out.println("文件夹重命名成功吗?同目录:"+dir.renameTo(new File("F:\\aaaaaaaaaaw")));
    }
}

删除&判断

package BasicObject.day19;

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

/**
 * Created by Dream on 2017/11/1.
 */
/*
判断:
        exists()        文件或文件夹是否存在。
        isFile()        是否是一个文件,如果不存在,则始终为false。
        isDirectory()   是否是一个目录,如果不存在,则始终为false。
        isHidden()      是否是一个隐藏的文件或是否是隐藏的目录。
        isAbsolute()    测试此抽象路径名是否为绝对路径名。
*/
public class DelJudgeTest {
    public static void main(String[] args)throws IOException{
        /*
        删除:
        delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
        deleteOnExit()  在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
        File file = new File("F:\\del.txt");
        System.out.println("文件是否创建成功?"+file.createNewFile());
        System.out.println("文件是否删除成功?"+file.delete());
        File file2 = new File("F:\\delOnExit.txt");
        file.createNewFile();
        file2.deleteOnExit();*/
        File file = new File("F:\\judge.txt");
        System.out.println("文件创建成功吗?"+file.createNewFile());
        System.out.println("是否是一个文件?"+file.exists());
        File dir = new File("F:\\judge");
        System.out.println("文件夹是否创建成功?"+dir.mkdir());
        System.out.println("是否是一个文件夹?"+dir.isDirectory());
        System.out.println("是否是绝对路径名?"+dir.isAbsolute());
    }
}

获取的方法:

package BasicObject.day19;

import java.io.File;
import java.io.FilenameFilter;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by Dream on 2017/11/1.
 */
/*
获取方法:
        getName()       获取文件或文件夹的名称,不包含上级路径。
        getPath()       返回绝对路径,可以是相对路径,但是目录要指定
        getAbsolutePath()   获取文件的绝对路径,与文件是否存在没关系
        length()        获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
        getParent()     返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
        lastModified()  获取最后一次被修改的时间。
        文件夹相关:
        staic File[] listRoots()    列出所有的根目录(Window中就是所有系统的盘符)
        list()                      返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
        list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
        listFiles()                 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
        listFiles(FilenameFilter filter)    返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
*/
class MyFilter implements FilenameFilter{

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(".java");
    }
}
public class FilePrac {
    public static void main(String[] args){
        /*File dir = new File("E:\\ForUs\\JavaPrac\\src");
        getJavaFiles3(dir);*/

        //new File()通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例,前提是指定路径必须存在文件或者文件夹
        File file = new File("F:\\a.txt");
        System.out.println("文件是否存在:"+file.exists());
        System.out.println("文件路径:"+file.getPath());
        System.out.println("文件绝对路径:"+file.getAbsolutePath());
        System.out.println("文件长度:"+file.length());
        System.out.println("文件父路径:"+file.getParent());
        long last = file.lastModified();
        Date date = new Date(last);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("最有一次的修改时间:"+format.format(date));
        System.out.println("列出所有跟目录:");
        File[] files = File.listRoots();
        for(File f : files){
            System.out.println(f.getPath());
        }
    }
    /*列出某个文件下的所有.java文件*/
    public static void getJavaFiles(File dir){
        File[] files = dir.listFiles();  //获取dir目录下的所有的子文件:包括文件和文件夹
        for(File file : files){
            String fileName = file.getName();
            if(fileName.endsWith(".java") && file.isFile()){
                System.out.println(fileName);
            }
        }
    }
    public static void getJavaFiles2(File dir){
        String[] fileNames = dir.list();   //直接获取目录dir下的文件名
        for(String fileName:fileNames){
            if(fileName.endsWith(".java")){
                System.out.println(fileName);
            }
        }
    }
    /*通过过滤器实现*/
    public static void getJavaFiles3(File dir){
        String[] fileNames = dir.list(new MyFilter());
        for(String fileName:fileNames){
            System.out.println(fileName);
        }
    }
    /*获得目录下的文件和文件夹*/
    public static void getFiles(File dir){
        File[] files = dir.listFiles();
        List<File> fileList = new ArrayList<File>();
        List<File> dirList = new ArrayList<File>();
        for(int i=0;i<files.length;i++){
            if(files[i].isFile()){
                fileList.add(files[i]);
            }
            if(files[i].isDirectory()){
                dirList.add(files[i]);
            }
        }
        System.out.println("子文件:");
        for(File file:fileList){
            System.out.println(file.getName());
        }
        System.out.println("子文件夹:");
        for(File file:dirList){
            System.out.println(file.getName());
        }

    }
}

其中getJavaFiles,getJavaFiles2,getJavaFiles3三个方法是实现了如下功能:列出指定目录中所有扩展名为.java的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值