Java IO流

时间:2021-07-23 17:40:48   收藏:0   阅读:0

今天系统的学习了 Java IO 这部分的知识,把一些之前没有用过的,或者忘记的方法和类重新学了一下。怕自己睡一觉把今天学的忘完了QaQ。所以,不得已写一下博客

IO概述

package com.coder.com;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class Demo01 {
    /**
     * IO流概述
     * 可以将数据传输的操作看成一种数据的流动,按照流动的方向可以分为输入Input和输出Output
     * Java中的IO操作主要指的是 java.io包下的一些常用类的使用, 通过这些类可以对数据进行读取(输入流)和写出(输出流)
     * <p>
     * IO流分类:
     * 按照方向:
     * - 输入流
     * - 输出流
     * 按照数据类型:
     * - 字节流
     * -输入 InputStream
     * -输出 OutputStream
     * - 字符流
     * -输入 Reader
     * -输出 Writer
     * 一切皆字节:
     * 计算机中的任何数据都是以二进制形式存储的
     * 传输时也是以二进制的形式传输的
     *</p>
     * @param args
     */
    public static void main(String[] args) throws IOException {
        //字节流
        OutputStream os = new FileOutputStream("E:\\a.txt", true);
        os.write(65);
        byte[] bytes = {66, 67, 68};
        os.write(bytes, 1, 2);
        os.write("你好,世界".getBytes(StandardCharsets.UTF_8));
        os.close();
        InputStream is = new FileInputStream("E:\\a.txt");
        bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println("new String(bytes, 0, len) = " + new String(bytes, 0, len));
        is.close();
    }
}

字节输出流

方法:

常用子类:

字符流

package com.coder.com;

import java.io.*;

public class Demo02 {
    public static void main(String[] args) throws IOException {
        Writer writer = new FileWriter("E:\\b.txt");
        writer.write("你好,世界,");
        writer.append("你好,Java").append("你好,Golang");
        writer.close();
        Reader reader = new FileReader("E:\\b.txt");
        char[] chars = new char[1024];
        int len = reader.read(chars);
        String s = new String(chars, 0, len);
        System.out.println("content = " + s);
        reader.close();
    }
}

转换流

package com.coder.com;

import java.io.*;

public class Demo03 {
    /**
     * 转换流
     * 字节流 装饰为 字符流 :使用装饰着设计模式
     * @param args
     */
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("E:\\a.txt");
        //param1 要转换的字节流
        //param2 指定编码名称
        InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        char[] buffs = new char[1024];
        int len = isr.read(buffs);
        for (int i = 0; i < len; i++) {
            System.out.print(buffs[i]);
        }
        isr.close();
        fis.close();
    }
}

打印流

package com.coder.com;

import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;

public class Demo04 {
    /**
     * 打印流
     * @param args
     */
    public static void main(String[] args) throws IOException {
        PrintStream ps = new PrintStream("E:\\c.txt");
        ps.println("你好,世界");
        ps.println("你好,Java");
        ps.println("你好, Golang");
        ps.close();
        PrintWriter pw = new PrintWriter("E:\\c.txt");
        pw.println("你好Vue");
        pw.println("你好SpringBoot");
        pw.close();
    }
}

Properties

package com.coder.com;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class Demo05 {
    public static void main(String[] args) throws IOException {
//        Properties properties = new Properties();
//        properties.setProperty("name", "王令");
//        properties.setProperty("age", "20");
//        properties.setProperty("gender", "男");
//        properties.store(new FileWriter("E:\\d.properties"), "个人信息");
        Properties properties = new Properties();
        properties.load(new FileReader("E:\\d.properties"));
        System.out.println("name = " + properties.getProperty("name"));
        System.out.println("age = " + properties.getProperty("age"));
        System.out.println("gender = " + properties.getProperty("gender"));
    }
}

序列化 反 序列化

package com.coder.com;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Demo06 {
    /**
     * 序列化 反 序列化
     *
     * @param args
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
//        Person wl = new Person("王令", 21, "男");
//        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\person"));
//        oos.writeObject(wl);
//        oos.close();
//        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\person"));
//        Person wl = (Person) ois.readObject();
//        System.out.println("wl = " + wl);
//        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\list_person"));
//        List<Person> people = new ArrayList<>();
//        people.add(new Person("张三", 20, "男"));
//        people.add(new Person("李四", 21, "女"));
//        people.add(new Person("王五", 22, "男"));
//        oos.writeObject(people);
//        oos.close();
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\list_person"));
        List<Person> people = (List<Person>) ois.readObject();
        for (Person person : people) {
            System.out.println(person);
        }
    }
}

class Person implements Serializable {
    private String name;
    private Integer age;
    private String gender;

    public Person() {
    }

    public Person(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", gender=‘" + gender + ‘\‘‘ +
                ‘}‘;
    }
}
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!