我们通过Io是进行的对文件的读写操作。但是有时候我们需要直接对文件进行操作。Java中提供了File类。可以对文件或文件夹进行操作
    1.file类的基本使用:

    1. public class FileDemo01 {
    2. public static void main(String[] args) {
    3. File file = new File("./text/file.txt");
    4. System.out.println("文件名称" + file.getName());
    5. System.out.println("文件的相对路径" + file.getPath());
    6. System.out.println("文件的据对路径" + file.getAbsolutePath());
    7. System.out.println("文件的父路径" + file.getParent());
    8. System.out.println(file.canRead() ? "文件可读" : "文件不可读");
    9. System.out.println(file.canWrite() ? "文件可写" : "文件不可写");
    10. System.out.println(file.isFile() ? "是一个文件" : "不是一个文件");
    11. System.out.println("文件的大小" + file.length()+"字节");
    12. System.out.println("最近文件修改的时间" + file.lastModified());
    13. }
    14. }
    15. Output
    16. /*
    17. 文件名称file.txt
    18. 文件的相对路径.\text\file.txt
    19. 文件的据对路径D:\idea work\project03\.\text\file.txt
    20. 文件的父路径.\text
    21. 文件可读
    22. 文件可写
    23. 是一个文件
    24. 文件的大小4192
    25. 最近文件修改的时间1619257830383
    26. */

    2.遍历操作
    2.1遍历某个目录下的所以文件

    1. public class FileDemo02 {
    2. public static void main(String[] args) {
    3. File file = new File("./text");
    4. if (file.isDirectory()){
    5. String fileName[]=file.list();
    6. for (String s : fileName) {
    7. System.out.println(s);
    8. }
    9. }else {
    10. System.out.println("不是文件目录");
    11. }
    12. }
    13. }
    14. OutPut:
    15. /*
    16. file.txt
    17. writer.text
    18. writer2.text
    19. writer3.text
    20. */


    2.2变量某个目录下的特定类型的文件(需要使用FilenameFilter接口中的accept方法)

    1. public class FileDemo {
    2. public static void main(String[] args) {
    3. File file = new File("./src/com/package04");
    4. if (file.isDirectory()){
    5. //1.表达式
    6. String fileName[]=file.list(((dir, name) ->name.endsWith(".java") ));
    7. //2.创建一个过滤器类实现FilenameFilter接口
    8. // String fileName[]=file.list(new Fil(".java"));
    9. for (String s : fileName) {
    10. System.out.println(s);
    11. }
    12. }else{
    13. System.out.println("不是文件目录");
    14. }
    15. }
    16. }
    17. class Fil implements FilenameFilter{
    18. String str;
    19. Fil(String str){
    20. this.str=str;
    21. }
    22. @Override
    23. public boolean accept(File dir, String name) {
    24. return name.endsWith(str);
    25. }
    26. }
    27. /*OutPut:
    28. Example.java
    29. Excepations.java
    30. ExceptionDemo.java
    31. ExceptionDemo2.java
    32. ...
    33. Process finished with exit code 0
    34. */
    1. <br />** 2.3遍历指定目录下的所有文件和子目录中的文件(方法的递归)**<br />
    1. public class FileDemo03 {
    2. public static void main(String[] args) {
    3. File file = new File("./text");
    4. fileName(file);
    5. }
    6. public static void fileName(File file){
    7. File[]files=file.listFiles();
    8. for (File file1 : files) {
    9. if (file1.isDirectory()){//再次判断文件是不是文件夹
    10. fileName(file1);
    11. }
    12. // System.out.println(file1.getAbsolutePath());//获得文件的绝对路径
    13. System.out.println(file1);
    14. }
    15. }
    16. }
    17. /*
    18. Output:
    19. .\text\file.txt
    20. .\text\sub\file.txt
    21. .\text\sub
    22. .\text\sub2\file.txt
    23. .\text\sub2
    24. .\text\writer.text
    25. .\text\writer2.text
    26. .\text\writer3.text
    27. */

    3.文件删除
    删除目录和目录下的文件和文件夹(递归)

    1. public class FileDemo04 {
    2. public static void deleFile(File file){
    3. File[] files = file.listFiles();
    4. for (File file1 : files) {
    5. if (file1.isDirectory()){
    6. deleFile(file1);
    7. }
    8. file1.delete();//如果是文件则删除
    9. }
    10. //同时在删除文件夹
    11. file.delete();
    12. }
    13. public static void main(String[] args) {
    14. File file = new File("./lib");
    15. deleFile(file);
    16. }
    17. }