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() 返回 绝对路径的。
Java IO流 01 File 类

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

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

Java IO流 01 File 类

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

Java IO流 01 File 类
file.exists() 判断文件 是否存在
Java IO流 01 File 类
确实 这个文件 已经 被我们 改名了,肯定是 不存在的。 我们 可以很方便的 用这个 方法 来判断 文件或 目录 是否存在。

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

canRead() 判断 File 对象 对应的文件和目录 是否可读
Java IO流 01 File 类
isFile() 判断 File 对象 是否是文件

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

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

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

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

Java IO流 01 File 类


1.2 File 类 的深入浅出

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

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

Java IO流 01 File 类

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

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

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

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

Java IO流 01 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));

Java IO流 01 File 类

遍历 文件

 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 类

上一篇:01背包问题


下一篇:hdu 1569 方格取数(2)