我们通过Io是进行的对文件的读写操作。但是有时候我们需要直接对文件进行操作。Java中提供了File类。可以对文件或文件夹进行操作
1.file类的基本使用:
public class FileDemo01 {public static void main(String[] args) {File file = new File("./text/file.txt");System.out.println("文件名称" + file.getName());System.out.println("文件的相对路径" + file.getPath());System.out.println("文件的据对路径" + file.getAbsolutePath());System.out.println("文件的父路径" + file.getParent());System.out.println(file.canRead() ? "文件可读" : "文件不可读");System.out.println(file.canWrite() ? "文件可写" : "文件不可写");System.out.println(file.isFile() ? "是一个文件" : "不是一个文件");System.out.println("文件的大小" + file.length()+"字节");System.out.println("最近文件修改的时间" + file.lastModified());}}Output/*文件名称file.txt文件的相对路径.\text\file.txt文件的据对路径D:\idea work\project03\.\text\file.txt文件的父路径.\text文件可读文件可写是一个文件文件的大小4192最近文件修改的时间1619257830383*/
2.遍历操作
2.1遍历某个目录下的所以文件
public class FileDemo02 {public static void main(String[] args) {File file = new File("./text");if (file.isDirectory()){String fileName[]=file.list();for (String s : fileName) {System.out.println(s);}}else {System.out.println("不是文件目录");}}}OutPut:/*file.txtwriter.textwriter2.textwriter3.text*/
2.2变量某个目录下的特定类型的文件(需要使用FilenameFilter接口中的accept方法)
public class FileDemo {public static void main(String[] args) {File file = new File("./src/com/package04");if (file.isDirectory()){//1.表达式String fileName[]=file.list(((dir, name) ->name.endsWith(".java") ));//2.创建一个过滤器类实现FilenameFilter接口// String fileName[]=file.list(new Fil(".java"));for (String s : fileName) {System.out.println(s);}}else{System.out.println("不是文件目录");}}}class Fil implements FilenameFilter{String str;Fil(String str){this.str=str;}@Overridepublic boolean accept(File dir, String name) {return name.endsWith(str);}}/*OutPut:Example.javaExcepations.javaExceptionDemo.javaExceptionDemo2.java...Process finished with exit code 0*/
<br />** 2.3遍历指定目录下的所有文件和子目录中的文件(方法的递归)**<br />
public class FileDemo03 {public static void main(String[] args) {File file = new File("./text");fileName(file);}public static void fileName(File file){File[]files=file.listFiles();for (File file1 : files) {if (file1.isDirectory()){//再次判断文件是不是文件夹fileName(file1);}// System.out.println(file1.getAbsolutePath());//获得文件的绝对路径System.out.println(file1);}}}/*Output:.\text\file.txt.\text\sub\file.txt.\text\sub.\text\sub2\file.txt.\text\sub2.\text\writer.text.\text\writer2.text.\text\writer3.text*/
3.文件删除
删除目录和目录下的文件和文件夹(递归)
public class FileDemo04 {public static void deleFile(File file){File[] files = file.listFiles();for (File file1 : files) {if (file1.isDirectory()){deleFile(file1);}file1.delete();//如果是文件则删除}//同时在删除文件夹file.delete();}public static void main(String[] args) {File file = new File("./lib");deleFile(file);}}
