java文件操作类——File

文件基本操作

  • 创建File实例:public File(String pathname)
  • 创建空文件:public boolean createNewFile() throws IOException

其中,要注意的是,windows下的路径分割符是"\",linux下的是"/",当我们在windows下java中要用路径分割符,必须使用双斜杠"\\"。最好用File.seperator表示路径分割符:

public class Test {
    public static void main(String[] args) {
        File file=new File("d:"+File.separator+"y.txt");
        try {
            System.out.println(file.createNewFile());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

运行结果:

true
  • 判断文件是否存在:public boolean exists()
  • 删除文件或者目录,如果是目录,必须是空目录,否则不删除:public boolean delete()
public class Test {
    public static void main(String[] args) {
        File file=new File("d:"+File.separator+"y");
        if(file.exists()){
            file.delete();
        }else{
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
  • 创建一级目录:public boolean mkdir()
  • 创建多级目录:public boolean mkdirs()
public class Test {
    public static void main(String[] args) {
        File file = new File("d:" + File.separator + "yy"+File.separator+"oo");
        if (!file.exists()) {
            System.out.println(file.mkdir());//当且仅当它的父目录存在,且没有与它重名的目录或文件,创建这个子目录
        }
        if (!file.exists()){
            System.out.println(file.mkdirs());//在这条路径中没有与它重名的目录或文件,创建这条路径上的所有必需且没有的目录
        }
    }
}

运行结果:

false
true

获取文件基本信息

public class Test {
    public static void main(String[] args) {
        File file=new File("d:"+File.separator+"tt"+File.separator+"y"+File.separator+"y.txt");
        System.out.println(file);
        System.out.println("name:"+file.getName());
        System.out.println("path:"+file.getPath());
        System.out.println("parent:"+file.getParent());//返回父路径字符串
        System.out.println("parentFile:"+file.getParentFile());//返回抽象父路径File类对象
        System.out.println("length:"+file.length()+"字节");//单位字节
        System.out.println("lastModified:"+file.lastModified()+"="+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
        System.out.println("list:"+file.list());//如果是文件或者是空目录或者该目录没有访问权限list()和listFiles()返回null
        String[] strings=file.getParentFile().getParentFile().list();//返回一个字符串数组,每个数组元素对应目录中的每个文件或目录
        for (int i=0;i<strings.length;i++){
            System.out.println("list"+i+":"+strings[i]);
        }
        File[] files=file.getParentFile().getParentFile().listFiles();//返回一个抽象路径名数组,每个数组元素对应目录中的每个文件或目录的File类对象
        for (int i=0;i<files.length;i++){
            System.out.println("listFile"+i+":"+files[i]);
        }

    }
}

文件树结构是这样的:

运行结果:

d:\tt\y\y.txt
name:y.txt
path:d:\tt\y\y.txt
parent:d:\tt\y
parentFile:d:\tt\y
length:8字节
lastModified:1532758792463=2018-07-28 14:19:52
list:null
list0:ii.txt
list1:y
listFile0:d:\tt\ii.txt
listFile1:d:\tt\y

我们可以用以上方法列出指定目录下的所有子路径:

public class Test {
    public static void main(String[] args) {
        File file=new File("d:"+File.separator+"tt");
        print(file);

    }
    public static void print(File file){
        if (file.isDirectory()){
            File[] result=file.listFiles();
            if (result!=null){
                for (int i=0;i<result.length;i++){
                    print(result[i]);
                }
            }
        }
        System.out.println(file);
    }
}

运行结果:

d:\tt\ii.txt
d:\tt\y\hh.txt
d:\tt\y\y.txt
d:\tt\y
d:\tt

猜你喜欢

转载自blog.csdn.net/linghuainian/article/details/81258901