欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IO总结之File文件总结(一)

程序员文章站 2022-05-27 14:48:58
...

目录

  • pathSeparator和separator分隔符的使用
  • 按照相对路径和绝对路径构建File
  • 常用方法的使用
  • list(),listFiles(),FilenameFilter过滤器
  • 递归打印文件目录

pathSeparator,separator分隔符的使用

尽量使用用 / 分隔路径

import java.io.File;
/**
测试两个常用的常量
1.路径分割符
2.名称分隔符 \ (windows)   /(linux)
 */
public class TestSeparator {
    public static void main(String[] args) {
        System.out.println(File.pathSeparator);  //路径分隔符
        System.out.println(File.separator); //分隔符

        //路径的三种表示方法
        String path = "D:\\github\\ACM";
        String path2 = "D:" + File.separator + "github" + File.separator + "ACM";
        String path3 = "D:/github/ACM/";

        File f = new File(path,".gitattributes");
        File f2 = new File(path2,".gitattributes");
        File f3 = new File(path3,".gitattributes");
        System.out.println(f.getAbsolutePath());
        System.out.println(f2.getAbsolutePath());
        System.out.println(f3.getAbsolutePath());
    }
}

效果
IO总结之File文件总结(一)


按照相对路径和绝对路径构建File

import java.io.File;
/**
 * 测试相对路径和绝对路径   构造File对象
 * 1. 父路径构建 (相对路径的构建)
 * 2. 直接构建(绝对路径的构建)
 *  user.dir (在自己的工作空间)
 */
public class AbsoluteRelativeTest {

    public static void main(String[] args) {
        String parentPath = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file";
        String name = "in.txt";

        //相对路径的构建 按照父路径
//        File f = new File(parentPath,name);
        File f = new File(new File(parentPath),name);  //这种方式等同于上面的
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getName());


        //绝对路径的直接构建
        File f3 = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/out.txt");
        System.out.println(f3.getAbsolutePath());
        System.out.println(f3.getName());


        //直接在当前目录下的相对路径的构造 : user.dir (在自己的工作空间输出)
        File f4 = new File("test.txt");
        System.out.println(f4.getPath()); //相对路径  如果是相对路径就输出相对路径
        System.out.println(f4.getAbsolutePath()); //绝对路径
        System.out.println(f4.getName());
    }
}

IO总结之File文件总结(一)


常用方法的使用

IO总结之File文件总结(一)

  • 文件判断
  • 目录判断
  • 创建文件
  • 创建目录
  • 创建临时文件以及相关方法的使用
import java.io.File;
import java.io.IOException;

public class FunctionTest {

    public static void main(String[] args) throws IOException, InterruptedException {
        test1();
        test2();
    }

    /**
     * 相关方法
     * 2.isFile() isDirectory()  createNewFile() delete()使用
     * 3.分清楚mkdir 和 mkdirs的区别
     */
    public static void test1() throws IOException {
        String path = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/";


        File f = new File(path + "in.txt");
        if (f.isFile()) System.out.println("f is a file! ");
        else System.out.println("f is not a file !");


        File f2 = new File(path);// 代表目录
        if (f2.isDirectory()) System.out.println("f2 is a directory!");
        else System.out.println("f2 is not a directory!");


        File f4 = new File(f2, "test.java");// f2这个文件目录下面没有666.java
        if(!f4.exists())f4.createNewFile();     // 在f2下面创建666.java
        f4.delete();     // 创建出来就删除f4文件


        //必须确保父目录存在
        File f5 = new File(path+"d1");
        f5.mkdir();// 如果前面的目录存在,就创建这个目录,否则就创建这个目录

        //不必要确保父目录存在
        File f6 = new File(path + "d2/d3/");
        f6.mkdirs();// 不论前面的目录是否存在,都创建多个目录

    }

    /**
     * 一些方法的使用
     */
    public static void test2() throws IOException, InterruptedException {
        String path = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/";
        File f = new File(path + "test.txt");
        System.out.println(f.exists()); //是否存在
        System.out.println(f.canWrite());
        System.out.println(f.length());  //文件夹不能获取长度
        System.out.println(f.getParent()); //存在就返回,不存在就返回null

        //临时文件的创建
        File temp = File.createTempFile("iii", ".temp", new File(path)); //前三个字节长,默认的后缀,以及目录
        Thread.sleep(1000);//查看效果
        temp.deleteOnExit(); //临时文件退出就删除
    }
}


list(),listFiles(),FilenameFilter过滤器

相关知识点

  • 列出相关的文件,文件夹
  • 过滤掉相关的文件(accept方法)
  • 注意list()方法是String类型,而listFile是File对象
import java.io.File;
import java.io.FilenameFilter;

/**
 * 子目录,或者子文件名
 * 以及文件过滤器的使用
 *  list()   listFiles()
 *  File[] Filters
 *  new FilenameFilter()  按照名字过滤的类  有一个必须实现的accept()方法
 */
public class ListFileTest {

    public static void main(String[] args) {
        File f = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file");

        if (f.isDirectory()) {
            System.out.println("====子文件-文件名=====");
            String[] subName = f.list();    //获取子文件的名字
            for (String temp : subName) {
                System.out.println(temp);
            }

            System.out.println("====子文件-文件目录=====");
            File[] FNames = f.listFiles();  //获取子文件的目录
            for (File temp : FNames) {
                System.out.println(temp.getPath()); //获取每个文件的名字或者  绝对路径
            }

            //命令设计模式(过滤器)
            System.out.println("====子文件-.java文件=====");
            File[] Filters = f.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return new File(dir, name).isFile() && name.endsWith(".java");//必须是文件且后缀是.java
                }
            });  //获取目录

            for (File temp : Filters) {
                System.out.println(temp.getAbsolutePath()); //获取每个文件的绝对路径
            }
        }

        System.out.println("----------输出它的根目录---------");
        File[] roots = f.listRoots();
        for (File temp : roots) {
            System.out.println(temp.getAbsolutePath());
        }
    }
}

IO总结之File文件总结(一)


递归打印文件目录

import java.io.File;

/**
 * 递归打印文件目录和文件
 */
public class PrintFileTreeTest {
    public static void printFile(File file, int level) {
        for(int i = 0; i < level; i++) {
            System.out.print("-");
        }
        System.out.println(file.getName());
        if(file.isDirectory()) {
            File[] files = file.listFiles();

            for(File i:files) {
                printFile(i, level+1);
            }
        }
    }

    public static void main(String[] args) {
        File file = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO");
        printFile(file, 0);
    }
}

效果
IO总结之File文件总结(一)

相关标签: File