一、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");
} }