Java的IO流


前言

Java通过IO流获取文件中的数据,并把数据持久化。

Java的IO流体系很庞大,也很灵活;

 

一、File类

我们想要在Java中读写文件,首先得有1个文件;

1个File类的对象代表1个文件或者1个文件夹,我们通过File类的对象,完成对文件/目录的创建和修改操作;

package IOStream;

import java.io.File;

public class TestFile {
    public static void main(String[] args) {
        try {
            File file = new File("student/zhanggen.txt");


            //0.判断相关API
            //判断文件是否存在?
            System.out.println(file.exists());
            //判断文件是否为绝对路径?
            System.out.println(file.isAbsolute());
            //判断是否为目录?
            System.out.println(file.isDirectory());
            //判断是否为文件?
            System.out.println(file.isFile());

            //1.创建文件
            // f.createNewFile();

            //获取当前文件/目录的父级目录(对象)
            System.out.println(file.getParentFile());
            //获取当前文件/目录的名称(字符串)
            System.out.println(file.getParent());

            //2.创建文件夹
            //创建文件夹:只能创建1级目录
            file.mkdir();
            //创建文件夹:创建多级目录
            file.mkdirs();

            //3.文件/目录重用名
            file.renameTo(new File("newfile.txt"));

            //4.查看相关API
            //查看文件的大小
            System.out.println(file.length());
            //查看文件的名字
            System.out.println(file.getName());


            //5.文件/目录删除
            //file.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

1.创建1个文件的完整过程

package IOStream;

import java.io.File;

public class TetsCreateFile {
    public static void main(String[] args) {

        File file = new File("java/file/test.txt");

        //1.判断父级目录是否存在?
        File ParentDirectory = new File(file.getParentFile().getAbsolutePath());
        if (!ParentDirectory.exists()) {
            ParentDirectory.mkdirs();
        }
        //2.判断文件是否存在?
        if (!file.exists()) {
            try {
                //3.文件不存在则创建文件!
                file.createNewFile();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }


    }
}

二、IO流简介

对于程序设计语言而言,输入输出系统(Input/Output)是非常核心的功能。

程序需要从配置文件/数据库中获取数据来内存中处理,也需要把在内存中处理好的数据保存到文件/数据库中。

1.什么是IO

以程序为中心,我们从外部数据源(文件、数据库)中读取外部数据到内存称之为Input;

以程序为中心,我们处理完内存中数据,持久化到硬盘或者数据称之为Output;                写

以上2个动作我们统称为IO,也就是Input和Output这2个单词的缩写。

2.输入出流流

IO流是输入流和输出流的统称;

输入流:程序通过输入流,把数据输入到内存,进行处理;  

输出流:程序通过输出流,把数据输出到硬盘,进行持久化;

3.IO流的种类

在java中我们通过IO流获取和保存数据

(1)根据IO流的方向,我们把IO流分为输入流和输出流;

(2)根据IO流中传输的数据,分为字节流和字符流;

(3)根据IO流的功能,分为字节流和处理流;

其中节点流就是直接连接到文件的IO流;

处理流是嵌套在其他IO流上,不直接连接文件;

传输字节流:InputStream/OutputStream

传输字符流:Reader/Writer

在Java中以上4类,是所有IO类的抽象父类;我们通过它们的子类完成文件内容的读和写;

三、节点流

四、处理流

1.缓冲流

2.转换流

3.对象流

参考