IO总结之File文件总结

原创 2018年04月15日 09:57:51

目录

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

效果
这里写图片描述

Java IO流学习总结二:File

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自【赵彦军的博客】 Java File类的功能非常强大,...
  • zhaoyanjun6
  • zhaoyanjun6
  • 2017-01-17 11:26:32
  • 828

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015-10-11 12:35:20
  • 20131

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流。 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Bu...
  • u013309870
  • u013309870
  • 2016-08-03 20:03:22
  • 1773

最完整的Java IO流学习总结

一、 File类 1、 java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作) 2、 File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容...
  • SilenceOO
  • SilenceOO
  • 2016-03-28 00:37:40
  • 991

java中文件IO操作总结

1 RandomAcessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。该类的对象使用过后一定要关闭,否则可能会出现意想不到的错误。 ...
  • qingguixiafan
  • qingguixiafan
  • 2017-09-05 13:05:15
  • 86

Python学习总结-文件与IO

本文通过针对不同应用场景及其解决方案的方式,总结了Python中对文件与IO的一些相关知识,具体如下:1.读写文本数据 应用场景:需要读取不同编码的文本数据,如ASCII,UTF-8,UTF-16等...
  • Arthur_02_13
  • Arthur_02_13
  • 2017-03-28 13:34:54
  • 811

文件流总结

  • 2018年03月31日 15:51
  • 29KB
  • 下载

Java IO完全总结(转载)

Java IO江苏 无锡 缪小东       本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中...
  • baobeiSimple
  • baobeiSimple
  • 2007-07-28 17:34:00
  • 23896

Java中IO流学习总结

Java中IO流学习总结一.IO流中的结构 字符流:顾名思义,该流只能处理字符,但处理字符速度很快 字节流:可以处理所有以bit为单位储存的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如...
  • Yue_Chen
  • Yue_Chen
  • 2017-05-26 18:00:19
  • 1730

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

  • 2014年11月15日 12:40
  • 404KB
  • 下载
收藏助手
不良信息举报
您举报文章:IO总结之File文件总结
举报原因:
原因补充:

(最多只允许输入30个字)