Java 文件操作

File类

file类的每一个实例可以表示硬盘中的一个文件或目录

使用文件可以做到:

  • 访问其表示的文件目录的属性信息,但不能直接访问数据

  • 创建和删除文件或目录

  • 访问一个目录中的子项

获取文件及其属性
length(): 返回文件的长度, 单位是字节数(如果File是目录, 则返回0)
exists(): 判断当前文件或目录是否存在,存在则返回true
isFile(): 判断当前file是否为文件,是文件则返回true
isDirectory(): 判断当前file是否为目录,是目录返回true
getName(): 获取当前File文件或目录的名字
getParent(): 获取当前File父目录的路径
getAbsolutePath(): 获取当前File文件或目录的完整路径
下面代码是访问文件,获取文件名,获取文件长度大小案例
public class FileDemo {
    public static void main(String[] args) {
        //访问当前项目下,demo目录中的demo.txt文件
        File file = new File("./demo/demo.txt");
        //获取访问的文件的文件名
        String name = file.getName();
        System.out.println("名字:" + name);
        //获取文件的长度(单位是字节)
        long length = file.length();
        System.out.println("文件长度:" + length + "个字节");
    }
}

注意:文件创建中需要输入路径:

  • new File(String path)

  • path就是要访问的文件的路径

  • 路径分为绝对路径和相对路径

  • 绝对路径: 从盘符开始定位文件的路径,不建议使用,假如更换到linux系统,linux系统中是没有盘符的

  • 相对路径: 相对项目而言的路径,可以使用"./"表示项目的路径,"./"可以省略

  • 在路径中,可以使用反斜杠(\)表示不同目录的分隔符,但是反斜杠在java中有特殊意义,

  • 是转义符号,两个反斜杠等于一个正斜杠(/)

创建一个新的文件的方法

createNewFile()方法: 创建指定路径和名称的文件, 如果文件不存在, 则创建并返回true, 否则就不创建并返回false

public class CreateNewFileDemo {
    public static void main(String[] args) throws IOException {
        //在当前项目下的demo目录下,创建一个新的文件test.txt
        //相对路径下,"./"可以忽略不写,默认就是从"./"开始的
        //File file = new File("./demo/test.txt");
        File file = new File("demo/test.txt");
        //判断当前File所表示的文件是否存在
        /**
         * boolean exists()
         * 该方法是判断当前File对象是否存在,
         * 如果存在,返回true,如果不存在,返回false
         */
        if (file.exists()) {
            System.out.println("文件已存在,不需要创建");
        } else {
            /**
             * boolean createNewFile() 根据指定的路径和文件名,创建文件,如果创建,就返回true
             * create 创建
             * new 新的
             * file 文件
             */
            file.createNewFile();
            System.out.println("文件不存在,创建完成!");
        }
    }
}
删除文件操作

delete()方法: 删除文件或删除空目录, 删除成功返回true只能删除空的目录(非空目录删除会失败)。

public class DeleteFile {
    public static void main(String[] args) {
        //删除当前项目下demo目录中的test.txt文件
        File file = new File("demo/test.txt");
        if (file.exists()) {
            file.delete();
            System.out.println("文件已删除");
        } else {
            System.out.println("文件不存在,不能删除");
        }
    }
}
创建目录

mkDir():创建当前File表示的目录

mikDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建

public class MKDirDemo {
    public static void main(String[] args) {
        //在demo目录下,创建一个新的目录,叫做dir
        //目录是没有后缀的
        File dir = new File("demo/dir/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z");
        if (dir.exists()) {
            System.out.println("该目录已存在");
        } else {
            /**
             * boolean mkdir()
             * 创建当前File指定的目录,要求要创建的目录所在的目录必须存在,否则不能创建
             * mk make 制造
             * dir directory目录
             */
            //dir.mkdir();
            /**
             * boolean mkdirs()
             * 创建当前File指定的目录,会自动将创建的目录所在的不存在的目录也一同创建
             */
            dir.mkdirs();
            System.out.println("目录不存在!已经创建");
        }
    }
}
删除目录

delete():删除文件或删除空目录, 删除成功返回true(非空目录删除会失败)

public class DeleteDirDemo {
    public static void main(String[] args) {
        //删除demo下的dir目录
        File dir = new File("./demo/dir");
        if (dir.exists()) {
            //目录存在,则删除目录,但是需要注意!删除的目录必须是一个空目录
            dir.delete();
            System.out.println("该目录已删除!");
        } else {
            System.out.println("该目录不存在!");
        }
    }
}
获取目录中的子项
public class ListFilesDemo {
    public static void main(String[] args) {
        //获取demo目录下的子项
        File dir = new File("./demo");
        //对dir进行判断,判断其是否是一个目录,只有目录才有子项
        /**
         * boolean isDirectory() 判断当前File表示的是否是一个目录
         * boolean isFile() 判断当前File表示的是否是一个文件
         */
        if (dir.isDirectory()) {
            /**
             * File[] listFiles();
             * 获取指定的File所表示的目录中的子项,并将每个子项声明为File实例,存储到File数组中
             */
            File[] subs = dir.listFiles();
            System.out.println("demo目录下存在" + subs.length + "个子项");
            //subs.fori 快速生成遍历该数组的循环体
            for (int i = 0; i < subs.length; i++) {
                System.out.println(subs[i].getName());
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值