Java IO流 01 File 类

2022/2/9 9:15:48

本文主要是介绍Java IO流 01 File 类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.1 输入输出


输入:允许程序读取外部数据(磁盘、光盘等等),和 程序运行时内存中的数据。

输出:允许程序 在运行状态时,将程序数据 输出到 各种可输出的地方。

换句话说,我们 只需要知道,输入 就是 把一些 数据 读到内存中,输出 就是 从内存中把一些数据 写到 一些地方。

为什么 上来 就要 明确的 认识以下 输入 输出呢?甚至 我们必须 下一个 比较清晰的 定义。

这是因为 Java 的 IO 对于 一些 科班C/C++ 的学生而言,并不是那么 好理解。

比如说 曾经 就有个 粉丝私信 问过我,当客户端发送数据过来的时候,为什么 要在 TCP服务端那里 先写一个 inputStream ,像这类人 其实有很多,大家不要笑。

因为很大一部分人,都是从 C/C++ 转来的。他们都是从 效果上 来 看待输入和输出的。打个比方,对于他们来说:输入 就是 单纯的 打字输入。输出 就是 直接输出。文件操作的话,有 读写的方法。所以 它们完全没有 IO流 概念。一时之间 无法进行 一个很好的 等效替换。这就使得 在理解方面比较困惑。

所以 在学习 IO 流之前 我们 必须 先 明确的 告诉你 什么 才是 输入,什么 才是输出。而并非是 只从 效果上 来 看待输入和输出。

上述那位粉丝的问题答案是:因为 这个所谓的传输数据,其实是 在客户端把数据写到了 输入流里。所以我们需要从 socket 输入流里面获取到。这是因为 我们 这些数据 都被 写入到了 这个流里。而 我们的输入 就是 拿到 数据。获取数据。并且 在 拿到是数据后,可以 创建一个 FileOutStream 把这个 数据 写到 一个 文件里。这样就可以 实现 文件的传输。


1.2 File 类

如果 是文件操作甚至是文件夹(目录)的话,你必须要 学习 File 类。

public File(String pathname) 通过将 给定的路径字符串转换未 抽象路径来 创建 新的 File 实例。

file.getAbsolutePath() **返回文件的绝对 路径 **

当你 使用了 相对路径创建了 File 对象,但是 你还想知道 这个 File 的 绝对路径的话,就要用 这个 方法了。而且有些时候 我们 不可能来回的 把 这个路径 复制粘贴 来 用,当这个时候的话,我们必须要 getAbsolutePath() 返回 绝对路径的。
在这里插入图片描述

file.getPath() 返回 你 输入的那个路径。

file.getName() 直接 获取 到 对应的 文件名,这个方法 极其的方便,必须要 自己 写 一个 字符串的处理方法 来获取文件名了。

在这里插入图片描述

file.renameTo(待复制或重命名后的 file对象) 这里必须要 提供一个 File 对象,当 这个 File 对象 里面的 path 发生了 位置变化,那么就是 复制粘贴,如果 仅仅是 文件名 变了,那就是改名。

在这里插入图片描述
file.exists() 判断文件 是否存在
在这里插入图片描述
确实 这个文件 已经 被我们 改名了,肯定是 不存在的。 我们 可以很方便的 用这个 方法 来判断 文件或 目录 是否存在。

canWrite() 判断 File 对象 对应的文件和目录 是否可写

canRead() 判断 File 对象 对应的文件和目录 是否可读
在这里插入图片描述
isFile() 判断 File 对象 是否是文件

isDirectory() 判断 File 对象 是否是 目录

isAbsolute() 判断 在各个平台上,这个文件的路径 到底是不是 绝对路径。linux 下 以 / 开头的是 绝对路径,而 win 下 就必须是 以 盘符 开头的才是 绝对路径。

lastModified() 返回文件的 最后修改时间戳

①① length() 返回 文件内容的长度

在这里插入图片描述


1.2 File 类 的深入浅出

createNewFile() 如果文件不存在,创建一个 新文件

delete() 删除 File 对象 所对应的 文件 或 路径

在这里插入图片描述

mkdir() 试图创建 File 所对应的目录,但是 不会 创建 父目录。

mkdirs() 试图创建 File 所对应的目录,也 会 创建 父目录。所以大多数情况下,也都用 mkdirs() 来做一个创建目录的活。

⑤ list() 列出 File 对象 下 的 所有 子文件 和 目录路径,但只会 返回 一个 String 数组。若 后续用 File 操作,还需要 自行转为 File。

⑥ listFiles() 列出 File 对象 下的 所有 子文件 和 目录路径,但 它 会 返回一个 File 数组。

在这里插入图片描述
FilenameFileter File 过滤器,将 需要保留的 文件路径 保留下来,而不需要保留的 则不保留。

 String[] subList = file1.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith("exe");
            }
        });
        System.out.println(Arrays.toString(subList));

在这里插入图片描述

遍历 文件

 public static void f(String fileName){
        File file = new File(fileName);
        if(file.isDirectory()){
            for(String fi:file.list()){
                f(file.getPath() + "\\" + fi);
            }
        }
        if(file.isFile()){
            System.out.println(file.getAbsoluteFile());
        }

    }

在这里插入图片描述



这篇关于Java IO流 01 File 类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程