zoukankan      html  css  js  c++  java
  • 初识IO流

    File类 只对文件或目录的属性进行操作

    File类 不能访问文件的内容,不能从文件中读取数据或向文件里写数据。

    构造方法
    File file = new File("文件路径和名称");

    createNewFile() //在磁盘上去创建文件

    getName()
    getAbsolutePath()
    getPath()

    Exits()
    isFile()
    isDirectory()


    读文件中数据: 把文件中的数据读到内存中

    写文件: 把内存中的数据写到文件中

    通过流 读写文件

    流: 一连串流动的字符,程序中流进流出的一个字节序列。

    输出流 将信息送往程序的外部

    通过流对象 将内存中的数据 以流的方式写入文件,
    也可以将文件中的数据以流的方式读取到内存。


    流对象在构造的时候,经常和数据源联系起来。

    数据源分为: 源 数据源

    目标 数据源

    输入流 : 联系的是源数据源 , 从源数据源(文件) 把数据读入 程序
    只能从中读取数据,不能写入

    输入流以InputStream 和Reader 作为基类

    输出流: 联系的是目标数据源, 从程序把数据写入 目标数据源(文件)
    只能向其写入数据,不能从中读取数据

    输出流 以OutputStream 和Writer 作为基类


    输入和输出是从程序运行所在的内存角度来划分的。


    按照操作的数据单元不同,分为字节流和字符流

    字节流 最小数据单元是 8位的字节 ,建议用于二进制数据

    字符流 最小数据单元是 16位的字符,用于文本

    四个基类都是抽象类,不能创建对象, 只能用作 更具体实现输入输出功能子类的父类(基类)

    一、 字节流 InputStream

    1.1 使用字节流读取文本文件

    API中的方法:
    int read();
    int read(byte[] b);
    int read(byte[] b,int off,int len);
    void close();
    void available();

    字节输入流父类:InputStream

    字节输入流子类: FileInputStream

    使用FileInputStream读取文本文件的步骤:

    1) 创建文件输入流对象 new

    2) 利用文件输入流的方法读取文本文件的数据 read()

    3) 关闭文件输入流对象

    1.2 使用字节流 写文本文件

    1.2.1 字节输出流父类 OutputStream
    void write();
    void write(byte[] b);
    void write(byte[] b, int off, int len);
    void close();

    1.2.2 字节输出流子类 FileOutputStream

    3种构造方法:

    FileOutputStream( new File("文件路径名称")); File file = new File("文件路径名称");

    FileOutputStream("d:/mydoc/hello.txt"); //新写入的内容覆盖原来的内容

    FileOutputStream("文件路径名称",true); //写入的内容不覆盖原有内容

    使用字节输出流的步骤:

    1) 构造文件输出流对象
    2) 利用文件输出流的方法把数据写入文本文件 write();
    3) 关闭文件输出流close()


    二、字符流 Reader 和Writer

    2.1 字符输入流父类 Reader

    read();
    read(byte[] c);
    read(char[] c, int off, int len);

    void close();

    2.2 字符输入流 子类 FileReader

    使用步骤:

    1)创建对象 : Reader fr = new FileReader("文件路径名称");

    2)利用类的方法读取文本文件 : fr.read();//读取单个字符

    fr.read( 字符数组名); 把读取的内保存到数组中

    3)关闭相关流对象 : fr.close();

    2.3 字符输入流 BufferedReader

    1)创建FileReader对象 : Reader fr = new FileReader("文件路径名称");

    2)创建BufferedReader 对象: BufferedReader br = new BufferedReader(fr);

    3)利用BufferedReader 类的方法读取文本文件的数据: br.readLine();

    2.4 字符输出流父类: Writer

    write(String str);
    write(String str,int off,int len);
    void close();
    void flush(); //刷新输出流

    2.5 字符输出流子类: FileWriter

    Writer fw = new FileWriter("文件路径名称");

    fw.write("hello");

    fw.close();

    2.6 字符输出流子类: 字符输出缓冲流 BufferedWriter

    Writer fw = new FileWriter("文件路径名称");

    BufferedWriter bw = new BufferedWriter(fw);

    bw.write("hello");
    fw.close();
    bw.close();


    三、 二进制文件的读写

    InputStream 抽象类,父类,基类
    FileInputStream 子类
    DataInputStream 子类的子类

    3.1 使用字节流类 Data InputStream 读二进制文件

    DataInputStream 类是FileInputStream的子类,是FileInputStream类的扩展。

    使用步骤:
    1)创建流对象
    FileInputStream fis = new FileInputStream("文件路径名");
    DataInputStream dis = new DataInputStream(fis);

    2)利用数据流的方法读取二进制文件
    dis.read();

    3)关闭流对象
    dis.close();

    3.2 使用字节流类DataOutputStream 写二进制文件

    1)创建对象
    FileOutputStream fos = new FileOutputStream("文件路径名");
    DataOutputStream dos = new DataOutputStream(fos);
    2)利用方法写二进制文件
    dos.write(1);

    3)关闭数据流
    dos.close();

    四、对象 序列化和反序列化对象流

    4.1 把一个对象信息写入文件:

    //创建对象
    FileOutputStream fos = new FileOutputStream("d:/mydoc/student.txt");
    ObjectOutputStream oos = new ObjectOutputStream(fos);

    //创建学生对象
    Student stu = new Student("安娜",30,"女");

    //把对象信息写入txt文件
    oos.writeObject(stu);


    4.2 从txt文件中读取一个对象的信息到控制台:

    FileInputStream fis = new FileInputStream("d:/mydoc/student.txt");
    ObjectInputStream ois = new ObjectInputStream(fis);

    Student stu2 = (Student)ois.readObject();

    System.out.println(stu2.getAge());
    System.out.println(stu2.getName());
    System.out.println(stu2.getSex());

    4.3 关闭流对象
    ois.close();
    fis.close();
    oos.close();
    fos.close();

  • 相关阅读:
    VSCode
    git CAPTCHA required
    css :active
    节流 防抖
    判断数据类型
    http协议的三次握手和四次挥手
    http协议
    发布网站相关信息
    获取任意两个数之间多个随机数的方法;
    数组中的12个方法;
  • 原文地址:https://www.cnblogs.com/sunnylife2004/p/8883340.html
Copyright © 2011-2022 走看看