zxzxzx0119的博客

Java,算法

IO总结之File文件总结

目录

  • 构造File对象
  • 相关方法的使用
  • listFiles,FilenameFilter过滤器
  • pathSeparator,separator分隔符的使用
  • 小程序递归打印文件目录

构造File对象

构建方法

  • 父路径构建 (相对路径的构建)
  • 直接构建(绝对路径的构建)
import java.io.File;
/**
 * 测试相对路径和绝对路径 构造File对象
 * 1. 父路径构建 (相对路径的构建)
 * 2. 直接构建(绝对路径的构建)
 * @author 郑鑫
 */
public class TestAbsoluteRelative {
    public static void main(String[] args) {
        String parentPath = "D:/eclipsework/zx";
        String name = "Test1.txt";

        //相对路径的构建
        File f = new File(parentPath,name);
        File f2 = new File(new File(parentPath),"Test2.txt");
        System.out.println(f.getAbsolutePath());
        System.out.println(f2.getName());

        //绝对路径的直接构建
        File f3 = new File("D:/eclipsework/Test3.work");
        System.out.println(f3.getAbsolutePath());

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

效果
这里写图片描述


相关方法的使用

相关知识点

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

public class TestFile_Function {

    public static void main(String[] args) {
        test1();
        try {
            test2();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void test1() {
        File f = new File("D:/eclipsework/zx/Main.java");// 操作文件
        File f2 = new File("D:/eclipsework/zx");// 代表目录
        File f3 = new File(f2, "Main.class");// 操作f2目录下的子文件
        if (f.isFile()) {
            System.out.println("f是一个文件");
        } else {
            System.out.println("f不是一个文件");
        }

        if (f2.isDirectory()) {
            System.out.println("f2是一个目录");
        } else {
            System.out.println("f2不是一个目录");
        }

        File f4 = new File(f2, "666.java");// f2这个文件目录下面没有666.java
        try {
            f4.createNewFile(); // 在f2下面创建666.java
        } catch (IOException e) {
            e.printStackTrace();
        }
        f4.delete();// 删除f4文件
        // 创建目录 //分清楚makedir 和 makedirs的区别

        //必须确保父目录存在
        File f5 = new File("D:/eclipsework/zx/666");
        f5.mkdir();// 如果前面的目录存在,就创建这个目录,否则就创建这个目录
        //不必要确保父目录存在
        File f6 = new File("D:/eclipsework/zx/444/555/666");
        f6.mkdirs();// 不论前面的目录是否存在,都创建多个目录

        System.out.println(f.getParent()); // 上层目录
        File f7 = new File("6.txt");
        System.out.println(f7.getParent()); // 如果是相对路径就返回 null
    }

    /**
     * 一些方法的使用
     * 临时文件的创建 
     * @throws IOException 
     */
    public static void test2() throws IOException {
        String path = "Main.java";
        //path = "D:/zx/Main.java";
        File f = new File(path);
        System.out.println(f.exists()); //是否存在
        System.out.println(f.canWrite());
        System.out.println(f.length());  //文件夹不能获取长度
        File temp = File.createTempFile("iii", ".txt", new File("D:/eclipsework/zx")); //前三个字节长,默认的后缀,以及目录
    }
}

效果
这里写图片描述


listFiles,FilenameFilter过滤器

相关知识点

  • 列出相关的文件,文件夹
  • 过滤掉相关的文件(accept方法)
  • 注意list()方法是String类型,而listFile是File对象
import java.io.File;
import java.io.FilenameFilter;
/**
 * 子目录,或者子文件名
 * @author 郑鑫
 */
public class TestFileList {
    public static void main(String[] args) {
        File f = new File("D:/eclipsework/zx/444");
        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.getAbsolutePath()); //获取每个文件的绝对路径
            }
            //命令设计模式(过滤器)
            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");
                }       
            });  //获取目录
            for(File temp : Filters) {
                System.out.println(temp.getAbsolutePath()); //获取每个文件的绝对路径
            }
        }
        File[] roots = f.listRoots(); //输出根目录
        for(File temp : roots) {
            System.out.println(temp.getAbsolutePath());
        }
    }
}

效果
这里写图片描述

pathSeparator,separator分隔符的使用

注意尽量用/分隔路径

import java.io.File;
/**
 * 测试两个常用的常量
 * 1. 分隔符 \ (windows)   /(linux)
 * @author 郑鑫
 */
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());
    }
}

效果
这里写图片描述


小程序递归打印文件目录

import java.io.File;

/**
 * 列出某个文件夹下面的子文件和子目录
 * @author 郑鑫
 */
public class PrintFileTree {
    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("D:/eclipsework/zx");
        printFile(file, 0);
    }
}

效果
这里写图片描述

阅读更多
文章标签: File
个人分类: JavaIO
上一篇Mysql第六章小结--Mysql函数
下一篇IO流之文件字节,字符输入输出流,以及缓冲流
想对作者说点什么? 我来说一句

文件总结

2018年03月31日 29KB 下载

黑马面试的现场编程之总结

2014年11月15日 404KB 下载

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

关闭
关闭