Java第三阶段学习(IO流------File类)

Posted JAVA0328董斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java第三阶段学习(IO流------File类)相关的知识,希望对你有一定的参考价值。

一、IO概述:

把内存中的数据存入到硬盘(持久化设备)中叫做:输出(写)Output操作。JAVA软件往电脑硬盘上走叫输出。

把硬盘中的数据读取到到内存里叫做:输入(读)Input操作。电脑硬盘上往JAVA软件里走叫输入。

以JAVA软件为参照物。

这种输入输出的动作叫做IO操作

二、File类(文件类)

2.1定义:File是文件和目录(文件夹)路径名的抽象表现形式,即:JAVA把文件和目录都封装为File对象

2.2构造函数:

 

       //File构造方法无法判定你写的这个文件是否真的存在
        //第一种方法,直接填写路径
        File f=new File("e:\\\\java\\\\dandan.java");//写路径时写两道杠,用来转译\'\\\' 符号
        System.out.println(f);
        //第二种方法,将路径跟文件名分开写作字符串,比较灵活
        String parent="e:\\\\java";
        String child="dandan.java";
        File f2=new File(parent,child);
        System.out.println(f2);
        //第三种方法,将父类的路径变为文件对象,子类还是字符串  最为灵活
        File p=new File("d:\\\\java");
        String c="b.java";
        File f3=new File(p,c);
        System.out.println(f3);

 2.3File类相关信息的获取方法:

            //绝对路径
        File f=new File("e:\\\\study\\\\codetool\\\\jdk\\\\src.zip");
        //获取文件或文件夹的名称    
        System.out.println(f.getName());
        //getPath相当于toString方法得到的值
        System.out.println(f.getPath());
        //得到文件的字节数(Long类型的值)
        System.out.println(f.length());  
                  //获得绝对路径:getAbsolutePath()
        //当你写相对路径的时候,会获得工程根路径+相对路径     但是不会判断是否正确
        File f=new File("src");
        System.out.println(f.getAbsolutePath());

2.4 文件和文件夹的创建删除方法

 

                //创建文件   createNewFile()
        File f=new File("e:\\\\java\\\\xxx.java");
        f.createNewFile();
        //创建文件夹   mkdir
        File f=new File("e:\\\\java\\\\aaa\\\\bbb\\\\ccc");
        //f.mkdir();
        //创建多级文件夹 .mkdirs()  尽量用这个方法,比上面只能创建一个的好用
        f.mkdirs();    
            //删除文件夹
        File f=new File("e:\\\\java\\\\新建文件夹");
        //多重路径下的需要先删底层的,一步步删上来
        //f.delete();
        //注意:delete() 方法删除的文件或文件夹是不走回收站的,直接从硬盘删除
        //删除需谨慎,一般不用这个方法,因为找不回来    
                //.exists() 可以验证路径及文件是否存在,并返回一个true或false
                File f=new File("e:\\\\java\\\\nishizhuma.txt");
        System.out.println(f.exists());
        // .isDirectory()       判断文件对象是否是文件夹
        System.out.println(f.isDirectory());
        //.isFile()     判断文件对象是否是文件
        System.out.println(f.isFile());          

2.5 listFiles()方法:

 用来获取一个目录中所有的文件或文件夹

 

        File f=new File("e:\\\\java");
        //获取该路径下的所有文件和文件夹的字符串    
        String[] filearr=f.list();
        for(String s:filearr){
            System.out.println(s);  //打印的是文件名
        }
        //将所有文件存入一个数组中
        File[] file=f.listFiles();
        for(File f1:file){
            System.out.println(f1); //打印的是路径+文件名
        }

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

 2.6 文件过滤器:

 File类中重载的listFiles方法,并且接受指定的过滤器。

 

  过滤器的使用:

public static void main(String[] args) {
        File f=new File("e:\\\\java");
        getFile(f);

    }
public static void getFile(File f){
        //通过文件过滤器,将返回为true的文件存入数组中
        File[] file=f.listFiles(new MyFilter());     //new  MyFilter()  文件过滤器
        for(File f1:file){
            System.out.println(f1);
        }
    }

 

 自定义一个过滤器类:只打印名称以.java结尾的文件

package com.oracle.Demo01;

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

public class MyFileter implements FileFilter {

    @Override
    public boolean accept(File pathname) {
        if(pathname.isDirectory()){
            return true;
        }
        //将文件名称全部转小写   因为在windows系统中,文件名称是不区分大小写,但是在java文件中是区分的,所以需要先转换为小写
        return pathname.getName().toLowerCase().endsWith(".java");   
    }
    
}

 

以上是关于Java第三阶段学习(IO流------File类)的主要内容,如果未能解决你的问题,请参考以下文章

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_1_File类的概述

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_3_字节输出流_OutputStream类&FileOutputStream

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_3_绝对路径和相对路径

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_2_File类的静态成员变量

JavaSE-异常机制File类IO流

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)