[Java核心API]IO流--文件File

    xiaoxiao2025-03-30  8

    总结文件File的相关知识

    1.文件基础知识

    package day06file; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; /**java.io.File * File的每一个实例用于表示操作系统中文件系统中的一个文件或目录(硬盘上的一个文件或目录)。 * 文件系统是操作系统的一部分,用于管理硬盘上的数据,通常会将数据以文件形式表示,并用目录进行归纳 * * 当使用File表示一个文件或目录时,可以: * 1:访问该文件或目录的属性信息,例如:文件名,最后修改时间,文件大小等。 * 2:可以操作文件或目录(创建,删除) * 3:可以访问该目录的所有子项但是不能访问文件数据。*/ public class FileDemo { public static void main(String[] args) throws IOException { File file = new File("."+File.separator+"demo.txt"); /**File可以访问其表示的文件或目录的属性信息 */ // 获取该文件的名称 void getName() System.out.println("name:"+file.getName());//name:demo.txt // 获取该文件的大小(字节量) int length() System.out.println("length:"+file.length());//length:38 // 获取文件是否可以读取,boolean canRead() System.out.println("canRead:"+file.canRead());//canRead:true // 获取文件是否可以写 boolean canWrite() System.out.println("canWrite:"+file.canWrite());//canWrite:true // 获取文件是否可执行 boolean canExecute() System.out.println("canExcecute:"+file.canExecute());//canExecute:true // 是否为隐藏文件 boolean isHidden() System.out.println("isHidden"+file.isHidden());//isHidden:false // 最后修改日期 lastModified() long lastModifiedTime = file.lastModified(); SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss"); String str = sdf.format(lastModifiedTime); System.out.println("lastModifiedTime:"+str);//lastModifiedTime:2016-08-14 13:20:19 /**File可以操作文件或目录,即:创建一个文件或目录*/ // 在当前目录下创建test.txt,不加路径默认在当前目录下 File f = new File("test.txt"); // boolean exists()判断当前File表示的文件或目录是否真实存在 if(!f.exists()){ f.createNewFile(); System.out.println("创建完毕"); }else{ System.out.println("文件已经存在"); } // void delete()删除一个文件,删除当前目录中的test.txt File fl = new File("test.txt"); if(f.exists()){ f.delete(); System.out.println("文件已删除"); }else{ System.out.println("文件不存在"); } // void mkdir()创建一个目录 在当前目录下创建目录demo File dir = new File("demo"); if(!dir.exists()){ dir.mkdir(); System.out.println("目录创建完毕"); }else{ System.out.println("目录已存在"); } /**创建一个多级目录 在当前目录demo下创建a/b/c/d/f**/ File dr = new File("demo"+File.separator+ "a"+File.separator+ "b"+File.separator+ "c"+File.separator+ "d"+File.separator+ "f"); if(!dr.exists()){ dr.mkdirs(); System.out.println("目录创建完毕"); }else{ System.out.println("目录已存在"); } /***删除目录 * 删除目录与删除文件的方法一致,delete方法, * 但是删除目录有一个前提条件,该目录是一个空目录(该目录中不包含任何子项),否则无法删除 * 先在当前目录中创建一个a文件夹*/ File d = new File("a"); if(d.exists()){ d.delete(); System.out.println("删除完毕"); }else{ System.out.println("删除不成功"); } /**获取一个目录中的部分子项 获取当前目录下得所有子项**/ File fz = new File("."); File[] subs = fz.listFiles(); System.out.println(subs.length); for(File sub:subs){ if(sub.isFile()){ System.out.print("文件"); }else if(sub.isDirectory()){ System.out.print("目录"); } System.out.println(sub.getName()); } System.exit(0); } }

    2.文件过滤器

    package day06file; import java.io.File; import java.io.FileFilter; public class FileFilterDemo { public static void main(String[] args) { /**获取一个目录中满足条件的部分子项 * File[] listFiles(FileFilter filter) * 该重载方法要求传入一个文件过滤器,然后该方法只会返回当前目录中满足过滤器要求的所有子项*/ // 获取目录下所有名字以“.”开头的文件或目录 File dir = new File("."); FileFilter filter = new MyFilter(); File[] subs = dir.listFiles(); for(File sub:subs){ System.out.println(sub.getName()); } } } class MyFilter implements FileFilter{ // 添加该过滤器的过滤条件,满足条件返回true @Override public boolean accept(File f) { // 名字以"."开头 String name = f.getName(); return name.startsWith("."); } }

    3.递归删除文件

    package day06file; import java.io.File; /** * 删除File表示的文件或目录 * 使用递归的方法 * */ public class FileDeleteDiGui { public static void main(String[] args) { File f = new File("."+File.separator+"a"); delete(f); } public static void delete(File file){ if(file.isDirectory()){ // 将其所有子项删除 File[] subs = file.listFiles(); for(File sub:subs){ delete(sub); } } } }
    转载请注明原文地址: https://ju.6miu.com/read-1297552.html
    最新回复(0)