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

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxzxzx0119/article/details/79946881

目录

  • 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());
    }
}

效果
这里写图片描述


按照相对路径和绝对路径构建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());
    }
}

这里写图片描述


常用方法的使用

这里写图片描述

  • 文件判断
  • 目录判断
  • 创建文件
  • 创建目录
  • 创建临时文件以及相关方法的使用
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());
        }
    }
}

这里写图片描述


递归打印文件目录

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);
    }
}

效果
这里写图片描述

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页