File - 图1

文件

当 File 表示一个文件的时候,有以下的操作

  1. import java.io.File;
  2. import java.io.IOException;
  3. public class FileTest {
  4. public static void main(String[] args) {
  5. File f = new File("./test1.txt");
  6. // 不过文件存不存在,都可以操作
  7. System.out.println(f); // 输出路径
  8. System.out.println(f.getName()); //test.txt
  9. System.out.println(f.getAbsoluteFile()); // C:\code\java\.\test.txt
  10. System.out.println(f.getPath()); // .\test.txt
  11. // 这里就有 IOException 的问题了
  12. try {
  13. System.out.println(f.getCanonicalPath()); // C:\code\java\test.txt
  14. if (f.exists()){
  15. System.out.println("文件存在");
  16. }else{
  17. f.createNewFile();
  18. System.out.println("创建文件成功");
  19. }
  20. }catch (IOException e){
  21. System.out.println(e)
  22. }
  23. }
  24. }

目录

当 File 表示一个目录的时候,和文件操作类似,可以通过以下方法创建和删除目录:

  • boolean mkdir():创建当前File对象表示的目录;
  • boolean mkdirs():创建当前File对象表示的目录,并在必要时将不存在的父目录也创建出来;
  • boolean delete():删除当前File对象表示的目录,当前目录必须为空才能删除成功。

其中还可以列出这个文件夹下面的所有的文件

  1. //表示文件夹
  2. File folder = new File(".");
  3. File[] fs = folder.listFiles();
  4. for(File f1 : fs){
  5. System.out.println(f1.getName());
  6. }

path

如果需要对目录进行复杂的拼接、遍历等操作,使用Path对象更方便。

练习

请利用File对象列出指定目录下的所有子目录和文件,并按层次打印。
例如,输出:

  1. Documents/
  2. word/
  3. 1.docx
  4. 2.docx
  5. work/
  6. abc.doc
  7. ppt/
  8. other/
import java.io.File;

public class PathTest {
    public static void main(String[] args) {

        printFolder(".");

    }
    static void printFolder(String path){
        File f = new File(path);

        File [] fs = f.listFiles();
        if(fs != null){
            for(File f1:fs) {
                if (f1.isDirectory()) {
                    System.out.println(f1.getName() + "/");
                    printFolder(f1.getPath());
                }else{
                    System.out.println("  " + f1.getName());
                }
            }
        }
    }
}