Java中文件与目录管理

    |     2015年5月20日   |   输入输出(IO)操作   |     0 条评论   |    1702

目录是管理文件的特殊机制:同类文件放在同一目录下,既能简化管理,也能提高效率。Java 在 java.io 包里提供了 File 类,专门用来管理磁盘上的文件和目录。

每个 File 对象代表一个文件或目录,对象属性里带着路径、大小、权限等信息。调用它的方法可以创建、删除、重命名,判断读写权限和是否存在,也可以查询最近修改时间。不同操作系统的文件系统不一样,用 File 就能以平台无关的方式统一处理。

一、创建 File 对象

创建 File 对象时需要给出对应的文件名或目录名。常用构造方法如下:

构造方法 功能
public File(String path) 指定关联的文件或目录名,path 可含路径
public File(String path, String name) 以 path 为路径,以 name 为文件或目录名
public File(File dir, String name) 用已有 File 对象 dir 作为目录,再拼 name
public File(URI uri) 用给定 URI 定位文件(原文 URL 构造已不推荐)

使用时注意两点:

  • path 可以是绝对路径、相对路径,也可以是某个目录。
  • 不同操作系统的目录分隔符不同。原文写的 System.dirSep 并不存在,应使用 File.separator。
"d:" + File.separator + "myjava" + File.separator + "file"

二、获取属性与操作

借助 File 对象可以查询属性,也可以创建、删除、重命名:

方法 功能
boolean canRead() / canWrite() 是否可读 / 可写
boolean exists() 文件或目录是否存在
boolean createNewFile() 不存在则创建空文件并返回 true;已存在返回 false
boolean isFile() / isDirectory() 是否为有效文件 / 目录
String getName() / getPath() 返回名称 / 路径字符串
long length() / lastModified() 字节数(目录为 0)/ 最近修改时间
String[] list() 目录下所有文件名;不是目录则返回 null
boolean delete() / mkdir() 删除(空目录才能删)/ 创建子目录
boolean renameTo(File newFile) 重命名为指定文件名

三、判断文件还是目录

【例 10-11】判断输入的绝对路径是文件还是目录。若是文件,输出绝对路径并判断是否可读写、是否隐藏;若是目录,输出该目录下所有非隐藏文件。

import java.io.*;
class ep10_11 {
    public static void main(String args[]) throws IOException {
        InputStreamReader in = new InputStreamReader(System.in);
        BufferedReader a = new BufferedReader(in);
        System.out.println("请输入一个绝对路径:");
        String FilePath = a.readLine();
        File FileName = new File(FilePath);
        if (FileName.isDirectory()) {
            System.out.println(FileName.getName() + "为一个目录");
            System.out.println("================");
            File FileList[] = FileName.listFiles();
            for (int i = 0; i < FileList.length; i++) {
                if (FileList[i].isHidden() == false) {
                    System.out.println(FileList[i].getName());
                }
            }
        } else {
            System.out.println(FileName.getName() + "为一个文件");
            System.out.println("================");
            System.out.println("绝对路径为:" + FileName.getAbsolutePath());
            System.out.println(FileName.canRead() ? "可读取" : "不可读取");
            System.out.println(FileName.canWrite() ? "可修改" : "不可修改");
            System.out.println(FileName.isHidden() ? "为隐藏文件" : "非隐藏文件");
        }
    }
}

一句话总结:File 只描述路径,不负责读写内容;用它创建、查询、删除文件和目录,跨平台时用 File.separator 拼路径。

转载请注明来源:Java中文件与目录管理
本文链接地址:https://ai.zhousir.top/?p=666
回复 取消