Java 高级Java File类的使用总结。

一、File类构造方法

3种常见构造方法
  • 1.File(String pathname),(最常用)
  • 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • 2.File(String parent, String child)
  • 从父路径名字符串和子路径名字符串创建新的 File实例。
  • 3.File(File parent, String child)
  • 从父抽象路径名和子路径名字符串创建新的 File实例
1.代码
package Java学习.Java高级.IO.File类.File的3个构造方法;

import java.io.File;

/**
 * 一、
 * 1.File(String pathname)
 * 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
 * 2.File(String parent, String child)
 * 从父路径名字符串和子路径名字符串创建新的 File实例。
 * 3.File(File parent, String child)
 * 从父抽象路径名和子路径名字符串创建新的 File实例
 * 4. 不常用:File(URI uri)
 * 二、File 重写了toString()方法打印路径
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("-----1.File(String pathname)------");
        File file = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习" +
                "\\Java高级\\IO\\File类\\File的3个构造方法");
        System.out.println(file);//
        System.out.println("----------2.File(String parent, String child)------");
        File file1 = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习",
                "\\Java高级\\IO\\File类\\File的3个构造方法");
        System.out.println(file1);
        System.out.println("--------3.File(File parent, String child)--------");
        File parantFile = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习");
        File file2 = new File(parantFile, "\\Java高级\\IO\\File类\\File的3个构造方法");
        System.out.println(file2);
        System.out.println("父路径parentFile 用对象可以调用File的方法,诸多好处");
        System.out.println("最常用的是方法1 简单直接。");
    }
}

注意:构造File的时候尽量使用绝对路径,相对路径有相对更目录,如果有包的话用不了,

二、Java 静态字段。静态分割符号

1.这个Linux系统能用到
  • 一、2个静态分割符号的字段field
    1. File.pathSeparator 路径分割符号 String 版(windows ; linux : )
  • File.pathSeparatorChar 路径分割符 Char 类型
  • 2.File.separator 分割符 (windows \ linux /)
  • File.separatorChar 分割符Char类型
2 .code
package Java学习.Java高级.IO.File类.File的静态分割符;

import java.io.File;

/**
* 一、2个静态分割符号的字段field
* 1. File.pathSeparator  路径分割符号 String 版(windows ; linux :)
*    File.pathSeparatorChar 路径分割符 Char 类型
* 2.File.separator 分割符 (windows \ linux /)
*   File.separatorChar 分割符Char类型
*/
public class Main {
   public static void main(String[] args) {
       System.out.println("File.pathSeparator路径分割符号:windows:   "+ File.pathSeparator);
       System.out.println("File.Separator 分割符windows:   "+File.separator);
   }
}

三、File常见方法。

1.获取File信息常用4方法

*一、4个获取功能的方法

    1. file.getAbsolutePath()
  • 返回不管file是相对路径还是绝对路径,都返回绝对路径
  • 2.getPath()
  • 就是普通的打印的toString()方法。
  • 3.getName()
  • 获取结尾部分,文件或者文件夹
  • 4.length()
  • 文件的大小,字节,文件夹没有大小(0)。
code
package Java学习.Java高级.IO.File类.File类方法.File类获取功能的方法;

import java.io.File;

/**
*一、4个获取功能的方法
* 1. file.getAbsolutePath()
* 返回不管file是相对路径还是绝对路径,都返回绝对路径
* 2.getPath()
* 就是普通的打印的toString()方法。
* 3.getName()
* 获取结尾部分,文件或者文件夹
* 4.length()
* 文件的大小,字节,文件夹没有大小(0)。
*
*/
public class Main {
   public static void main(String[] args) {
       System.out.println("--------1.getAbsolutePath(File file)-----");
       File file = new File("Main.java");
       System.out.println("获取绝对路径: "+file.getAbsolutePath());
       System.out.println("-----2.getPath()-----");
       System.out.println("获取file对象路径和toString相同: "+file.getPath());
       System.out.println("------3.getName()----");
       System.out.println("获取对象路径的结尾的名称(文件或者文件夹): "+file.getName());
       System.out.println("------4.length()-----");
       File file1 = new File(file.getAbsolutePath());
       System.out.println("获取文件的大小(字节)(文件夹和不存在的文件为0): "+file1.length());


   }
}
2.判断File信息常用3方法。
package Java学习.Java高级.IO.File类.File类方法.File类判断功能方法;

import java.io.File;

/**
 * 一、三个判断功能的方法:可用于获取或者操作文件之前的判断
 * 1. file.exist() :
 * 文件或者目录是否存在,路径不存在false
 * 2. file.isDirectory()
 * 文件目录是否文件夹结尾 路径不存在false
 * 3. file.isFile()
 * 文件目录是否文件结尾 路径不存在false
 */
public class Main {
    public static void main(String[] args) {
        File file = new File("Main.java");
        System.out.println("--1. file.exist() :-----");
        System.out.println(file.exists());
        System.out.println("----2. file.isDirectory()---");
        System.out.println(file.isDirectory());
        System.out.println("----3. file.isFile() ---");
        System.out.println(file.isFile());

    }
}
4.操作文件File的常见方法(重要)
4.1创建和删除目录

1.创建和删除目录的4个方法,

  • 一、 boolean file.createNewFile()
  • 1.文件目录不存在 抛出异常 IOException
  • 2.目录下的文件不存在返回false
  • 二、boolean delete() 没有走回收站非常危险
  • 1.删除该目录下的文件,或者文件目录,只有一层
  • 2.成功true
  • 三、boolean mkdir() :
  • 1.创建目录只能有一层
  • 四、mkdirs()
  • 1.可创建多层.

2.code

package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.创建删除;

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

/**
 * 一、 boolean file.createNewFile()
 * 1.文件目录不存在 抛出异常 IOException
 * 2.目录下的文件不存在返回false
 * 二、boolean delete() 没有走回收站非常危险
 * 1.删除该目录下的文件,或者文件目录,只有一层
 * 2.成功true
 * 三、boolean mkdir() :
 * 1.创建目录只能有一层
 * 四、mkdirs()
 * 1.可创建多层.
 */
public class Main {
    private static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习" +
            "\\Java高级\\IO\\File类\\File类方法\\File操作文件功能方法\\创建删除\\";

    public static void main(String[] args) throws IOException {
        System.out.println("-------一a.createNewFile()----------");
        File a1 = new File(url + "新文件a1.txt");
        if(a1.exists()){
            a1.delete();
        }
        System.out.println("a1.createNewFile(): " + a1.createNewFile());

        System.out.println("-------二b.delete()----------");
        File b1 = new File(url + "新文件b1.txt");
        b1.createNewFile();
        System.out.println("b1.delete(): " + b1.delete());

        System.out.println("-------三c.mkdir()----------");
        File c1 = new File(url + "第一层dir");
        File c2 = new File(url + "2.1层\\2.2层");
        if (c1.exists()) {
            c1.delete();
        }
        if (c2.exists()) {
            c2.delete();
        }
        System.out.println("一层c1: " + c1.mkdir());
        System.out.println("同时2层 c2: " + c2.mkdir());
        c1.delete();
        c2.delete();
        System.out.println("-------四d.----------");

        File d1 = new File(url + "同时3层第1层\\同时3层第2层\\同时3层第3层");
        if (d1.exists()) {
            d1.delete();
        }
        System.out.println("d1.mkdirs(): " + d1.mkdirs());


    }
}
4.2 遍历文件夹目录

1.给出路径文件夹目录的2个方法

  • 一、2种方法。给出目录数组
  • 1.String[] list()
  • 返回目录名称字符串数组 file.getName()
  • 2.File[] listFiles()
  • 返回目录File类型数组,
  • listFiles(new FileFilter) 还可以传入过滤器的接口。(后面会详讲)
  • 二、注意:
  • 1.url不存在,file.list()返回空,再遍历就会 空指针异常
  • 2.url不是指定 目录 ,空指针异常 nullPointerException
  • 3.隐藏文件和文件夹也能识别

2.代码

package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.遍历文件夹目录;

import java.io.File;

/**
 * 一、2种方法。给出目录数组
 * 1.String[] list()
 *
 * 2.File[] listFiles()
 *
 * 二、注意:
 * 1.url不存在,file.list()返回空,再遍历就会 空指针异常
 * 2.url不是指定 目录 ,空指针异常 nullPointerException
 * 3.隐藏文件和文件夹也能识别
 */
public class Main {
    static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\J" +
            "ava学习\\Java高级\\IO\\File类\\File类方法\\File操作文件功能方法";
    public static void main(String[] args) {
        System.out.println("----1.String[] list()------");
        File file1 = new File(url);
        String[] list = file1.list();
        if (list!=null){
            for (String s : list) {
                System.out.println(s);
            }
        }

        System.out.println("-----2.File[] listFiles()----");
        File file2 = new File(url);
        File[] listFiles = file2.listFiles();
        if(listFiles!=null){
            for (File listFile : listFiles) {
                System.out.println(listFile);
            }
        }
    }
}
4.3练习项目:
目的:打印src中的所有.java 文件,,使用FileFilter文件过滤器,和递归知识
介绍FileFilter过滤器接口。
    • 一、需求:打印src中的所有.java 文件,,使用FileFilter文件过滤器
  • 二、使用方法 : 带参数的listFiles()
  • file.listFiles(new FileFilter{}),重写过滤的accept方法即可。
  • 三、原理 listFiles(new FileFilter{}),
  • 1.获取File的list数组,
  • 2.将数组放到accept一个个判断
  • 3.true就保存起来。
代码
package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.遍历文件夹目录.练习3FileFilter文件过滤器实现练习2;

import java.io.File;
import java.io.FileFilter;

/**
 *  * 一、需求:打印src中的所有.java 文件,,使用FileFilter文件过滤器
 *  二、使用方法 : 带参数的listFiles()
 *  file.listFiles(new FileFilter{}),重写过滤的accept方法即可。
 *  三、原理 listFiles(new FileFilter{}),
 *  1.获取File的list数组,
 *  2.将数组放到accept一个个判断
 *  3.true就保存起来。
 */
public class Demo {
    static void useFileFiltersearchJava(File file) {
        File[] listFiles = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory();
            }
        });
        for (File listFile : listFiles) {
            if (listFile.isDirectory()) {
                useFileFiltersearchJava(listFile);
            } else if (listFile.isFile()) {
                System.out.println(listFile.getName());
            }
        }

    }

    public static void main(String[] args) {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src";
        useFileFiltersearchJava(new File(url));
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JarvanStack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值