Java—文件IO

引言:程序设计中的分层问题

1.输入源可能有很多
2.整个数据流上会有各种加工厂(Java中的一个个对象)

文件

1.1 理解文件

文件(File):操作系统组织数据的一种方式

  1. 硬盘上的文件
    eg:在windows操作中,经常在硬盘上创建的各种.txt, .doc, .exe, .java, .lib, .mp3等等,都可以称之为文件
  2. 包括:硬盘、网络、屏幕、键盘都有可能被组织成文件

1.2 File类

java用来描述文件用的是:类 File
通常一个文件有以下三个权限:
1.是否可读
2.是否可写
3.是否可执行

1.2.1 File类的构造方法

java.io.File 类是一个普通的类,如果要实例化对象,则常用到两个构造方法

方法 解释
public File(String pathname) 创建指定路径文件对象
public File(String parent, String child) 创建指定路径文件对象,但可指明父路径和子路径

1.3 File类的常用方法

1.3.1 基本文件操作

方法 解释
public boolean exists() 测试指定路径中文件或者目录是否存在
public boolean isDirectory() 判定一个文件是否是目录
public boolean isFile() 判断是否是文件
public boolean delete() 删除文件
public boolean createNewFile() throws IOException 创建一个新文件

1.3.2 目录操作

方法 解释
public boolean mkdir() 创建一个空目录
public boolean mkdirs() 创建目录(无论有多少级父目录,都会创建)
public String getParent() 取得父路径
public File getParentFile() 取得父File对象

1.3.3 文件属性操作

方法 解释
public long length() 取得文件大小(字节)
public long lastModified() 最后一次修改日期

1.3.4 其他操作

方法 说明
public File[] listFiles() 列出一个目录指定的全部组成

程序

public class Main {
    public static void main(String[] args) throws IOException {
        /* 构造方法一: public  File(String pathname) */
        File file = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录");

        /* 构造方法二: public File(String parent, String child)  */
        File file1 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录",
                "test.txt");
        file1.createNewFile();//创建文件 会抛出异常(有可能上级目录也不存再)
        //注意:
        // **file1创建的文件此时并不存在 但编译正确
        // **我们只是创建了一个File对象 不保证文件一定存在
        // **调用file1.createNewFile()来创建文件

        file1.delete(); //删除文件
        file1.deleteOnExit();//在jvm虚拟机退出时再删除文件 相当于临时文件

        file1.mkdir();//创建目录
        File file2 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录",
                "1\\2\\3\\test.txt");
        file2.mkdirs();//创建多级目录
        //注意:
        // **mkdirs()允许上级目录不存在
        // **mkdir()若上级目录不存在 运行正确 但不会创建目录

        System.out.println("是否存在:" + file.exists());
        System.out.println("是否是文件夹:" + file.isDirectory());
        System.out.println("该盘符的空闲空间: " + file.getFreeSpace());
        System.out.println("该盘符的可用空间: " + file.getUsableSpace());
        //一般情况是file.getFreeSpace() = file.getUsableSpace()
        System.out.println("该盘符的总空间: " + file.getTotalSpace());
        System.out.println("绝对路径: " + file.getAbsolutePath());
        System.out.println("上一级路径:" + file.getParent());
        System.out.println("可读: " + file.canRead());
        System.out.println("可写: " + file.canWrite());
        System.out.println("可执行: " + file.canExecute());
        System.out.println("是否是隐藏文件: "+file.isHidden());
        System.out.println("当前文件大小: "+file.length());
        System.out.println("==================================");

        File file3 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO");
        File[] files = file3.listFiles();
        for (File f : files) {
            System.out.println(f.getAbsolutePath());
        }
        System.out.println("==================================");
        File[] rootsfiles = File.listRoots(); //属于类的方法
        for (File f : rootsfiles) {
            System.out.print(f);//列出所有根节点
            System.out.println("根目录是否存在"+f.exists());
        }
        /*
        C:\根目录是否存在true
        D:\根目录是否存在true
        E:\根目录是否存在true
        */
    }
}

1.4 绝对路径/相对路径

  1. 绝对路径():从根路径开始的一个文件的路径
    eg: 1. 在Windows上
    C:\Windows
    2.在Linux上
    /root/hello/

  2. 相对路径():相对当前路径的一个路径
    1.是相对于运行时期的路径——程序启动时的路径: 工作路径(work directory)
    2. 上一级路径…
    当前路径.

    注:1.相对路径是运行期间定位的
    2.相对于进程的工作路径:启动时的路径
    java中一般无法修改,如果通过其他语言(c\c++)是可以修改工作路径的

注意:不是绝对路径就是相对路径

发布了70 篇原创文章 · 获赞 3 · 访问量 1243

猜你喜欢

转载自blog.csdn.net/qq_43361209/article/details/103316355
今日推荐