File类

概述

(1) java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关

(2)File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。

(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

(4) File对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。

构造方法

public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

// 文件路径名
String p1 = "D:\\a.txt";
File file1 = new File(p1); 
 
// 文件路径名
String p2 = "D:\\A\\b.txt";
File file2 = new File(p2); 
 
// 通过父路径和子路径字符串
 String p3 = "d:\\A";
 String c1 = "b.txt";
 File file3 = new File(p3, child);
 
// 通过父级File对象和子路径字符串
File p4 = new File("d:\\A");
String c2 = "b.txt";
File file4 = new File(p4, c2);

常用方法
获取功能的方法

getAbsolutePath() 获取绝对路径

gerPath() 获取相对路径

getName() 获取文件名,相当于调用了一个toString方法
length() 查看文件的字节数

public class FileGet {
    public static void main(String[] args) {
        File f = new File("d:/A/b.txt");     
        System.out.println("文件绝对路径:"+f.getAbsolutePath());
        System.out.println("文件构造路径:"+f.getPath());
        System.out.println("文件名称:"+f.getName());
        System.out.println("文件长度:"+f.length()+"字节");
 
        File f2 = new File("d:/aaa");     
        System.out.println("目录绝对路径:"+f2.getAbsolutePath());
        System.out.println("目录构造路径:"+f2.getPath());
        System.out.println("目录名称:"+f2.getName());
        System.out.println("目录长度:"+f2.length());
    }
}

输出结果:
文件绝对路径:d:\A\b.txt
文件构造路径:d:\A\b.txt
文件名称:b.txt
文件长度:413字节
 
目录绝对路径:d:\A
目录构造路径:d:\A
目录名称:A
目录长度:4471

绝对路径和相对路径
(1)绝对路径:是一个固定的路径,从盘符开始
(2)相对路径:是相对于某个位置开始

public class FilePath {
    public static void main(String[] args) {
          // D盘下的bbb.java文件
        File f = new File("D:\\b.txt");
        System.out.println(f.getAbsolutePath());
          
        // 项目下的bbb.java文件
        File f2 = new File("b.txt");
        System.out.println(f2.getAbsolutePath());
    }
}

输出结果:
D:\b.java
D:\A\b.java
判断功能的方法

exists() 查询目录是否存在

isDirectory() 判断当前路径是否为目录

isFile() 判断是否是文件

public class FileIs {
    public static void main(String[] args) {
        File f1 = new File("d:\\A\\b.txt");
        File f2 = new File("d:\\A");
          // 判断是否存在
        System.out.println("d:\\A\\b.txt是否存在:"+f1.exists());
        System.out.println("d:\\A是否存在:"+f2.exists());
          // 判断是文件还是目录
        System.out.println("d:\\A文件?:"+f2.isFile());
        System.out.println("d:\\A目录?:"+f2.isDirectory());
    }
}

输出结果:
d:\A\b.txt是否存在:  true
d:\A是否存在:  true
d:\A文件?:  false
d:\A目录?:  true

创建删除功能的方法
createNewFile():创建新文件当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
delate():删除由此File表示的文件或目录。
mkdir() :创建由此File表示的目录。
mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

public class FileCreateDelete {
    public static void main(String[] args) throws IOException {
        // 文件的创建
        File f1 = new File("ac.txt");
        System.out.println("是否存在:"+f1.exists()); // false
        System.out.println("是否创建:"+f1.createNewFile()); // true
        System.out.println("是否存在:"+f1.exists()); // true
        
         // 目录的创建
          File f2= new File("ABC");    
        System.out.println("是否存在:"+f2.exists());// false
        System.out.println("是否创建:"+f2.mkdir());    // true
        System.out.println("是否存在:"+f2.exists());// true
 
        // 创建多级目录
          File f3= new File("ABC\\ABB");
        System.out.println(f3.mkdir());// false
        File f4= new File("ABC\\ABB");
        System.out.println(f4.mkdirs());// true
      
          // 文件的删除
           System.out.println(f1.delete());// true
      
          // 目录的删除
        System.out.println(f2.delete());// true
        System.out.println(f4.delete());// false
    }
}

目录的遍历

public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录
public class FileFor {
    public static void main(String[] args) {
        File dir = new File("d:\\AA");
      
          //获取当前目录下的文件以及文件夹的名称。
        String[] names = dir.list();
        for(String name : names){
            System.out.println(name);
        }
        //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
        File[] files = dir.listFiles();
        for (File file : files) {
            System.out.println(file);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值