JAVA之文件操作

一、常用方法:

1、打印文件路径:

使用.getName()可以打印出相对路径,也可以打印出文件/夹名

使用.getAbsolutePath()可以打印出绝对路径。

使用.getCanonicalPath()可以打印出绝对路径。

getAbsolutePath()和getCanonicalPath()方法的区别:

  • 使用getCanonicalPath()需要处理异常,即向上抛出异常或要使用try catch;而getAbsolutePath()不需要;
  • getCanonicalPath()的当前路径不特意标识,而getAbsolutePath()会写明,例如:

                D:IDEA CODEkkx-java.idea和D:IDEA CODEkkx-java..idea

2、判断是否是文件:

使用.isFile()方法

3、判断是否是路径:

使用.isDirectory()方法

4、判断磁盘上是否存在:

使用.exists()方法

5、创建文件夹:

使用.mkdir()方法

6、创建文件:

使用.createNewFile()方法

二、应用:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file1 = new File("."); //小技巧:写相对路径时,如果拿不准相对路径的位置,
        // 可以写“.”,然后打印出来,就能知道相对路径的位置了
        System.out.println(file1.getName());
        System.out.println(file1.getAbsolutePath());
        System.out.println(file1.getCanonicalPath());
        System.out.println(file1.isFile());
        System.out.println(file1.isDirectory());
        System.out.println(file1.exists());
        //结果:
//        .
//        D:IDEA CODEkkx-java.  绝对路径是到该文件所在的工程的根目录,而不是所在包名
//        D:IDEA CODEkkx-java
//        false
//        true
//        true
        File file2 = new File("a.txt"); //小技巧:写相对路径时,如果拿不准相对路径的位置,
        // 可以写“.”,然后打印出来,就能知道相对路径的位置了
        System.out.println(file2.getName());
        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getCanonicalPath());
        //getAbsolutePath()与getCanonicalPath()的区别:
        //1、getCanonicalPath()需要处理异常;而getAbsolutePath()不需要
        //2、getCanonicalPath()的当前路径不特意标识,而getAbsolutePath()会写明点,例如:
        //D:IDEA CODEkkx-java.idea和D:IDEA CODEkkx-java..idea
        System.out.println(file2.isFile());
        System.out.println(file2.isDirectory());
        System.out.println(file2.exists());
        //当a.txt不存在时,结果:
//        a.txt
//        D:IDEA CODEkkx-javaa.txt
//        D:IDEA CODEkkx-javaa.txt
//        false
//        false
//        false

 三、具体应用:

1、创建文件,已经存在就不创建,否则创建:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file2 = new File("a.txt");
        System.out.println(file2.getName());
        if(!file2.exists()){
               file2.createNewFile(); //创建文件,创建在当前路径的工程下
        }
    }
}

2、打印当前路径下的所有以.java结尾的文件:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
         File file1 = new File("."); 
         files = file1.listFiles(new FileFilter() { //重写匿名内部类
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile();
            }
        });
        System.out.println("==================");
        for(File f:files){
            if(f.getName().endsWith(".java")){
                System.out.println(f.getCanonicalPath());
            }
    }
}

//结果:
//            ==================
//            D:IDEA CODEkkx-javaa.java
//            D:IDEA CODEkkx-javakkx-java.java