Java IO —— File

Java IO —— File

File是文件和目录路径名的抽象表示

File的常见使用方式

使用递归遍历文件目录

使用file.listFiles()

 //通过递归来遍历目录
    public static void printDir(File dir) {
        System.out.println(dir);
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                printDir(file);
            } else {
                System.out.println(file);
            }
        }
    }
	
	public static void main(String[] args) {
        printDir(new File("C://intel"));
       // printDir(new File("/java"));
    }
	//结果
C:\intel
C:\intel\GfxCPLBatchFiles
C:\intel\GfxCPLBatchFiles\{EC94D02F-D200-4428-9531-05AF7F9799CB}.bat
C:\intel\Logs
C:\intel\Logs\IntelCPHS.log
C:\intel\Logs\IntelGFX.log
C:\intel\Logs\IntelGFXCoin.log

列出磁盘下的的文件和文件夹

使用File.listRoots()

  //列出磁盘下的文件和文件夹
    public static void ListRoots() {
        File[] files = File.listRoots();
        for (File file : files) {
            System.out.println(file);
            if (file.length() > 0) {
                String[] filenames = file.list();
                for (String fileName : filenames) {
                    System.out.println(fileName);
                }
            }
        }
    }
	//结果
C:\
$Recycle.Bin
$WINRE_BACKUP_PARTITION.MARKER
Boot
bootmgr
BOOTNXT
BOOTSECT.BAK
Documents and Settings
hiberfil.sys
Intel
KRECYCLE
pagefile.sys
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
swapfile.sys
System Volume Information
Users
Windows
E:\
$RECYCLE.BIN
97af9b300158f93b578b944c93afc142
abc.txt

过滤文件

使用file.list(new FilenameFilter())

 //过滤文件
    public static void filter() {
        File[] files = File.listRoots();
        for (File file : files) {
            System.out.println(file);
            if (file.length() > 0) {
                String[] filenames = file.list(new FilenameFilter() {
                    @Override
                    public boolean accept(File dir, String name) {
                        return name.endsWith(".sys");
                    }
                });
                for (String fileName : filenames) {
                    System.out.println(fileName);
                }
            }
        }
    }

mkdir和mkdirs的区别

mkdir 只能创建一级目录,且父目录必须存在
mkdirs 可以创建多级目录,父目录不一定存在

 private static final String path1 = "path1";
    private static final String path2 = "path2/path2";
    private static final String path3 = "path3";
    private static final String path4 = "path4/path4";
    private static final String filePath = "file1.txt";

    public static void mkdirAndmkdirs() {
        File file = new File(path1);
        if (!file.exists()) {
            file.mkdir();
        }
        System.out.println(file.getPath());

        File file1 = new File(path2);
        if (!file1.exists()) {
            file1.mkdir();
        }
        System.out.println(file1.getPath());

        File file2 = new File(path3);
        if (!file2.exists()) {
            file2.mkdirs();
        }
        System.out.println(file2.getPath());

        File file3 = new File(path4);
        if (!file3.exists()) {
            file3.mkdirs();
        }
        System.out.println(file3);

        File file_f = new File(path4 + filePath);
        if (!file_f.exists()) {
            try {
                file_f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println(file_f.getPath());

        System.out.println("当前文件的绝对路径" + file_f.getAbsolutePath());
        System.out.println("当前文件的相对路径 "+ file_f.getPath());
    }
	//结果显示
path1
path2\path2
path3
path4\path4
path4\path4file1.txt
当前文件的绝对路径E:\java\untitled2\path4\path4file1.txt
当前文件的相对路径 path4\path4file1.txt	
	

在这个例子中,Path2 是个二级路径,但是使用mkdir不能创建对应的目录。
Path4也是个二级路径,但是mkdirs能够创建对应的目录
Java IO —— File_第1张图片

.\和 …\

. 和 .\ 代表当当前目录
…\ 表示当前目录的上级目录

//        File file = new File(".\\Hello.txt");
//      File file = new File("./Hello.txt");
        File file = new File(".//Hello.txt");
        file.createNewFile();
        System.out.println(file.getPath());
		
//        File file1 = new File("E:\\Text.txt");
        File file1 = new File("E://Text.txt");
        file1.createNewFile();
        System.out.println(file1.getPath());
		
		 File file2 = new File("..\\test2.txt");//在当前目录的上级目录创建新的文件
        file2.createNewFile();
        System.out.println(file2.getAbsolutePath());
		
		//结果
.\Hello.txt
E:\Text.txt
E:\java\untitled2\..\test2.txt

// 和 \ 都能够创建新的文件

然后使用…\方式在上级目录中创建了test2.txt的文件
image

在Project根目录下的文件获取方式

 File relativeFile = new File("fileCopy");

在Src文件夹下或者某个目录下,只需要指明文件夹即可

File test = new File("src/test");

你可能感兴趣的:(Java基础知识)