IO概述
当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。
当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。
因此我们把这种输入和输出动作称为IO操作。
File类
File文件和目录(文件夹)路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
File类的构造函数
public class FileMethodDemo { public static void main(String[] args) { //创建文件对象 File file = new File("Test22.java"); //获取文件的绝对路径,即全路径 String absPath = file.getAbsolutePath(); //File中封装的路径是什么获取到的就是什么。 String path = file.getPath(); //获取文件名称 String filename = file.getName(); //获取文件大小 long size = file.length(); System.out.println("absPath="+absPath); System.out.println("path="+path); System.out.println("filename="+filename); System.out.println("size="+size); } }
文件和文件夹的创建删除等
public class FileMethodDemo2 { public static void main(String[] args) throws IOException { // 对文件或者文件加进行操作。 File file = new File("e:\file.txt"); // 创建文件,如果文件不存在,创建 true 如果文件存在,则不创建 false。 如果路径错误,IOException。 boolean b1 = file.createNewFile(); System.out.println("b1=" + b1); //-----------删除文件操作-------注意:不去回收站。慎用------ boolean b2 = file.delete(); System.out.println("b2="+b2); //-----------需要判断文件是否存在------------ boolean b3 = file.exists(); System.out.println("b3="+b3); //-----------对目录操作 创建,删除,判断------------ File dir = new File("e:\abc"); //mkdir()创建单个目录。//dir.mkdirs();创建多级目录 boolean b4 = dir.mkdir(); System.out.println("b4="+b4); //删除目录时,如果目录中有内容,无法直接删除。 boolean b5 = dir.delete(); //只有将目录中的内容都删除后,保证该目录为空。这时这个目录才可以删除。 System.out.println("b5=" + b5); //-----------判断文件,目录------------ File f = new File("e:\javahaha");// 要判断是否是文件还是目录,必须先判断存在。 // f.mkdir();//f.createNewFile(); System.out.println(f.isFile()); System.out.println(f.isDirectory()); } }
listFiles()方法介绍
public class FileMethodDemo3 { public static void main(String[] args) { File dir = new File("e:\java_code"); //获取的是目录下的当前的文件以及文件夹的名称。 String[] names = dir.list(); for(String name : names){ System.out.println(name); } //获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息 File[] files = dir.listFiles(); for(File file : files){ System.out.println(file); } } }
注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
文件过滤器
public class FileDemo2 { public static void main(String[] args) { //获取扩展名为.java所有文件 //创建File对象 File file = new File("E:\code\day11_code"); //获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器 File[] files = file.listFiles(new MyFileFilter()); //遍历获取到的所有符合条件的文件 for (File f : files) { System.out.println(f); } } } // 自定类继承FilenameFilter过滤器接口 //定义类实现文件名称FilenameFilter过滤器 class MyFileFilter implements FilenameFilter{ public boolean accept(File dir, String name) { return name.endsWith(".java"); } }
public class FileDemo2 { public static void main(String[] args) { //获取扩展名为.java所有文件 //创建File对象 File file = new File("E:\code\day11_code"); //获取指定目录下的文件夹 File[] files = file.listFiles(new FileFileterByDir()); //遍历获取到的所有符合条件的文件for (File f : files) { System.out.println(f); } }
// 自定义类继承FileFilter过滤器接口
//文件过滤器
class FileFileterByDir implements FileFilter{
public boolean accept(File pathname) {
return pathname.isDirectory();
}
}