java File类

File类

1.1 File类作用

  1. 文件可认为是相关记录或放在一起的数据的集合。文件一般存放在存储介质上:硬盘、u盘、光盘、软盘、云盘等。

  2. java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作)

  3. File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容(IO)。

  4. File类定义了一些与平台无关的方法操作,如:创建、删除文件和重命名等。

  5. Java中目录被看成是一个特殊的文件。 File.listFiles()方法可以返回目录中所有的子目录和文件。

  6. 在unix下路径分隔符为(/),而在windos中则是为(\),在java中可以正确的处理不同系统中的分隔符。注意:从1.5开始在java中可以统一使用(/)来作为路径分隔符。

1.2 File类的构造方法

  1. public File(String pathname); 以pathname为路径创建File对象,如果pathname是相对路径,则是相对于Java的系统属性user.dir中的路径。(对eclipse创建的java工程来说,就是该工程的根目录。)

  2. public File(File dir,String name);

  3. public File(String parentName,String name);

1.3 File类文件属性

1.3.1 属性:
  1. public static final String separator 存储了当前系统的名称分隔符,在 UNIX 和Mac系统上,此字段的值为 '/';在 Windows 系统上,它为 '\';为了程序的跨平台特性,文件的路径应该用这个属性值来代表。

  2. public static final char pathSeparator 存储了当前系统默认路径分割符号,在 UNIX 和Mac系统上,此字段的值为':',Windows系统是';'。

1.4 使用File类对文件进行访问

方法名描述
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public boolean exists() 文件或目录是否存在
public boolean isDirectory() 是否是目录(文件夹)
public boolean isFile() 是否是文件(非目录)
public boolean isHidden() 是否是隐藏文件
public long lastModified() 最后一次修改的时间
public long length() 返回文件大小,以字节为单位
public String getName() 返回文件的名字(不包含路径)
public String getPath() 返回创建File时使用指定的路径;提示
public String getAbsolutePath() 返回此File对象的绝对路径名
public File getAbsoluteFile() 返回该文件的绝对路径的文件对象。
public String getParent() 返回该文件所在的目录的路径。
public File getParentFile() 返回该文件所在的目录File对象。
提示创建文件的时候是相对路径就返回相对路径,是绝对路径就返回绝对路径。

示例代码:

   File f1 = new File("C:/a.txt");
        String a1 = f1.getAbsolutePath();
        System.out.println("a1:" + a1);
        String path1 = f1.getPath();// 返回创建 File的路径
        System.out.println("path1:" + path1);
​
        File f2 = new File("helloworld.txt");
        String a2 = f2.getAbsolutePath();
        System.out.println("a2:" + a2);
​
        File f3 = f2.getAbsoluteFile();
        System.out.println("f3:" + f3.getPath());
​
        /** 在使用该方法的时候,最好把File 转成以绝对路径描述的FIle对象 */
        String parent = f3.getParent();// 得到該File 所在目录的路径String
        System.out.println("parent:" + parent);
​
        /** 在使用该方法的时候,最好把File 转成以绝对路径描述的FIle对象 */
        File parentFile = f3.getParentFile();
        System.out.println("parentFile:" + parentFile);// 得到該File 所在目录的路径File
​
        String path2 = f2.getPath();// 返回创建 File的路径
        System.out.println("path2:" + path2);
​
        String name = f2.getName();// 得到文件名字
        System.out.println("name:" + name);
​
        boolean exists = f2.exists();
        System.out.println("exists:" + exists);
        if (exists) {
            /*** 以下方法都需要操作平台去操作文件,在使用的时候,最好对该文件判断是否存在 **/
            boolean canRead = f2.canRead();
            System.out.println("canRead:" + canRead);
​
            boolean canWrite = f2.canWrite();
            System.out.println("canWrite:" + canWrite);
​
            boolean hidden = f2.isHidden();
            System.out.println("hidden:" + hidden);
​
            boolean file = f2.isFile();
            System.out.println("file:" + file);
​
            boolean directory = f2.isDirectory();
            System.out.println("directory:" + directory);
​
            long lastModified = f2.lastModified();
            System.out.println("最后一次修改的时间:" + lastModified);
​
            long length = f2.length();
            System.out.println("length:" + length);
​
            /*** 以上方法都需要操作平台去操作文件 **/
        }

1.5 使用File类对文件进行操作

方法名描述
public boolean createNewFile() 当文件不存在是,则创建一个空文件(非目录)
public boolean delete() 删除文件。如果是目录必须是空目录才能删除
public boolean mkdir() 创建此抽象路径名指定(最后一级)的目录
public boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件

示例代码:

package main3;
​
import java.io.File;
import java.io.IOException;
​
public class Main2 {
​
    public static void main(String[] args) {
​
        File f1 = new File("a/text.txt");
        /**** 创建文件(要确保该文件所在的目录存在,否则会抛IO异常) ****/
        if (!f1.exists()) {
            try {
                boolean createNewFile = f1.createNewFile();
                System.out.println("createNewFile:" + createNewFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("该文件已存在...");
        }
​
        /** 删除文件(如果该File是目录,则必须保证该目录问空目录。且只删除最后一级目录) */
        File f2 = new File("b/text.txt");
        boolean delete = f2.delete();
        System.out.println("delete:" + delete);
​
        /** 创建目录(只创建最后一级目录,也需要确保该目录所在的目录存在,否则返回false) */
        File f3 = new File("c");
        boolean mkdir = f3.mkdir();
        System.out.println("mkdir:" + mkdir);
​
        /** 创建多级目录 */
        File f4 = new File("d/b/f/c/c");
        boolean mkdirs = f4.mkdirs();
        System.out.println("mkdirs:" + mkdirs);
        System.out.println("正常结束...");
​
        testRenameTo();
    }
​
    private static void testRenameTo() {
​
        // renameTo 剪切功能
​
        File from = new File("test.mp3");// 剪切的源文件的路径描述
​
        File to = new File("helloworld.mp3");// 粘贴的目标文件的路径描述
​
        /** 如果源文件和目标文件所在的目录相同,则就变成了重名功能 **/
        boolean renameTo = from.renameTo(to);
        System.out.println(renameTo);
​
    }
​
}
​

1.6 使用File类浏览目录中的文件和子目录

方法名描述
public String[] list() 返回此目录中的文件名和目录名的数组
public File[] listFiles() 返回此目录中的文件和目录的File实例数组
public File[] listFiles(FileFilter filter) 返回此目录中满足指定过滤器的文件和目录

课堂练习:使用 递归算法 打印出目录(文件夹)中所有文件与目录(包括目录内部的文件和目录)。


private static void listChilds(File f){
        if (f==null)  
            return;
        System.out.println(f.getPath());
        if (f.isFile()) 
            return;
        File[] files = f.listFiles();
        for (File file : files)  
            listChilds(file);
    }

示例代码:
File file = new File("D:\\java");// 
​
        File f2 = new File(file, "java001");
        System.out.println(f2);
​
        File f4 = new File("D:\\java", "java001");
        System.out.println(f4);
​
        String[] list = file.list();// 返回该目录下的所有文件的名字
        for (String path : list) {
            System.out.println(path);
        }
​
        // 返回该目录下的所有 File 文件路径描述
        File[] listFiles = file.listFiles();
        if (listFiles != null) {
            for (File f : listFiles) {
                System.out.println(f);
            }
        }
        // 返回此目录中满足指定过滤器的文件和目录
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.isDirectory()) {
                    return true;
                } else {
                    return false;
                }
            }
        });
​
        for (File f : files) {
            System.out.println("--->" + f);
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值