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类的静态成员变量