专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

IO流(File类:构造方法、常用方法、递归获取文件、文件过滤)

java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流。

File类的构造方法:

1、File类创建对象:

35_1.png

利用前三个构造方法创建File类对象:

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        String path1 = "E:\\IO流\\java1";// 第一个参数为对象,第二个为路径
        File f1 = new File(path1);
        File f11 = new File(f1, "001.txt");
        System.out.println(f11);

        String path2 = "E:\\IO流\\java2";// 要写两个斜线,第一条把第二条转义
        File f2 = new File(path2);
        System.out.println(f2);

        String path3 = "E:\\IO流\\java3";
        String path4 = "002.txt";
        File f3 = new File(path3, path4);// 将一个路径分为两部分,灵活性增强
        System.out.println(f3);
    }
}

35_2.png

2、File类的常用方法:

(1)返回路径名、文件名和文件大小

package pers.pers.file;

import java.io.File;

public class FileDemo {
public static void main(String[] args) {
    String path = "E:\\IO流\\java\\0、实验\\实验二\\汇编语言标志位(CF)及一些常用指令.pdf";// 第一个参数为对象,第二个为路径
    File f1 = new File(path);//创建File类的对象
    String absPath=f1.getAbsolutePath();//返回绝对路径(即一个文件的全部路径)
    System.out.println(absPath);

    String name=f1.getName();//返回此路径下的文件或目录名称
    System.out.println(name);

    String stringname=f1.getPath();//将抽象路径名转换为字符串
    System.out.println(stringname);

    long size=f1.length();
    System.out.println(size);//获取文件大小(字节),不能获取文件夹的大小
}
}

35_3.png

(2)创建文件:

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java\\IO.txt");
        System.out.println(file.createNewFile());
    }
}

程序运行后,在java文件夹下出现IO.txt文件。

(3)删除路径下的文件或目录:

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java\\IO.txt");
        System.out.println(file.delete());
    }
}

程序运行后java目录下的IO.txt文件消失。

(4)路径下的文件或目录是否存在

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java");
        System.out.println(file.exists());
    }
}

(5)测试路径下的文件是否为目录:

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java");
        System.out.println(file.isDirectory());
    }
}

(6)测试路径下的文件是否是一个标准文件(文件可以,文件夹不行):

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java\\1.txt");
        System.out.println(file.isFile());
    }
}

(7)创建目录:

package pers.pers.file;

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

public class CreatFile {
    public static void main(String[] args) throws IOException {
        File file = new File("E:\\IO流\\java\\2.txt");
        System.out.println(file.mkdir());
    }
}

3、获取路径下的文件:

package pers.pers.file;

import java.io.File;

public class FileDemo1 {
    public static void main(String[] args) {
        File dir = new File("E:\\IO流\\java");
        //返回字符串数组,获取的是目录下的当前的文件以及文件夹的名称。
        String[] names = dir.list();
        for(String name : names){
            System.out.println(name);
        }
        //获取目录下当前文件以及文件对象
        File[] files = dir.listFiles();
        for(File file : files){
            System.out.println(file);
        }
    }
}

35_4.png

4、IO流递归输出文件

package pers.zbb.File;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("E:\\IO流");
        getFileAll(file);
    }

    public static void getFileAll(File file) {
        File[] files = file.listFiles(); for (File f : files) { if (f.isDirectory()) { getFileAll(f); } else { System.out.println(f); } } } }

在输出路径下的文件过程中,递归调用了getFileAll方法,即自己调用自己,如果在遍历路径的时候是文件夹,则会再次调用getFileAll方法,遍历文件夹下的文件路径,输出不是文件夹的文件。

35_5.png

5、文件过滤器:

(1)常用方法:

35_6.png

35_7.png

实现过滤器功能需要先实现FilenameFilter接口:

package pers.zbb.Filter;

import java.io.File;
import java.io.FilenameFilter;

public class FilterDemo implements FilenameFilter {

    public boolean accept(File dir, String name) {

        return name.endsWith(".txt");
    }

}

创建测试类,调用listfile方法:

package pers.zbb.Filter;

import java.io.File;

public class Test {
public static void main(String[] args) {
    File file=new File("E:\\IO流\\java");
    File[] files = file.listFiles(new FilterDemo());
    for (File f : files) 
        System.out.println(f);

}
}

35_8.png

(2)抽象路径名的过滤

FileFilter类:

35_9.png

输出文件:

package pers.zhb;

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

public class FileFilterDemo implements FileFilter{

    public boolean accept(File pathname) {

    return pathname.isFile();
    }

}

35_10.png

文章永久链接:https://tech.souyunku.com/22646

未经允许不得转载:搜云库技术团队 » IO流(File类:构造方法、常用方法、递归获取文件、文件过滤)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们