• 第二十一章——关于流的注解、整理


    文件类:
    java.io.File
    基本方法;
    geName: 获取文件名称
    getPath: 获取文件路径
    length: 获取文件大小
    isDirectory: 判断这个东西是不是一个目录
    isFile: 判断这个东西是不是一个文件

    IO流
    什么是流
    流, 可以看成是一根管道, 用来读取文件的数据

    流的分类
    按照数据流的方向
    输入流(Input), 输出流(Output)
    输入流: 从文件往程序走数据
    输出流: 从程序往文件走数据

    按照处理数据的单位不同:

    byte(1), short(2), int(4), long(8)
    float(4), double(8)
    boolean(1)
    char(2)

    字节流(以stream结尾的), 字符流(以Reader, Writer结尾的)
    字节流: 一个字节占8位, 以一个字节为单位读数据
    字符流: 一个字符占两个字节, 以一个字符为一个单位

    按照功能分:
    节点流, 处理流
    节点流: 只有一个根管道套在文件上进行传输
    处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层

    JDK提供的流
    提供了四个基本抽象类: InputStream, OutputStream, Reader, Writer

    InputStream的基本方法:
    int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回

    int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理)

    int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节数

    close(): 关闭资源

    OutputStream的基本方法:
    void write(int b)

    void write(byte[] b)

    int read(byte[] buffer, int offset, int length)

    close()

    flush(): 将缓冲区中的文件全部写出

    在使用流的时候的一个良好的习惯, 先flush, 再close

    Reader的基本方法:
    int read()
    int read(char[] c)
    int read(char[] c, int offset, int length)
    close()

    Writer的基本方法:
    void write()
    void write(char[] c)
    void write(char[] c, int offset, int length)
    // 直接写一个字符串出去, 字符串里面的有一个方法s.toCharArray(), 查API
    void write(String s)
    void write(String s, int offset, int length)
    close()
    flush()

    字节流
    字符流
    缓冲流
    转换流--->字节-字符
    数据流--->八大数据类型
    Print流--->System.out.println();
    Object流--->

    之前做过一个宠物乱斗的程序,但是没有存档读档的功能,现在用流的知识可以做一个这样的功能,如下:

    package com.maya.util;
    
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import com.maya.pet.Pet;
    
    public class SaveReadUtil
    {
        public static final String CONFIGPATH = "e:\java\petconf.bat";
    
        public static Pet readPet() {
            File file = new File(CONFIGPATH);
            Pet pet = new Pet();
            try{
                FileReader fr = new FileReader(CONFIGPATH);
                BufferedReader br = new BufferedReader(fr);
    
                pet.setName(br.readLine());
                pet.setAge(Integer.parseInt(br.readLine()));
                pet.setSex(br.readLine());
                pet.setBirthday(DateFormat.convert(br.readLine()));
                pet.setHealthy(Integer.parseInt(br.readLine()));
                pet.setHungry(Integer.parseInt(br.readLine()));
                pet.setHappy(Integer.parseInt(br.readLine()));
    
            } catch(Exception e) {
                System.out.println("读取数据出现异常 !");
                return null;
            }
    
            return pet;
        }
    
    
        public static void savePet(Pet pet) {
            File file = new File(CONFIGPATH);
            try{
                FileWriter fw = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(fw);
                
                bw.write(pet.getName());
                bw.newLine();
                bw.write(pet.getAge() + "");
                bw.newLine();
                bw.write(pet.getSex());
                bw.newLine();
                bw.write(DateFormat.convert(pet.getBirthday()));
                bw.newLine();
                bw.write(pet.getHealthy() + "");
                bw.newLine();
                bw.write(pet.getHungry() + "");
                bw.newLine();
                bw.write(pet.getHappy() + "");
    
                bw.close();
            } catch(Exception e) {
                System.out.println("保存出现异常 !");
            }
    
    
    
    
        }
    }

    buffered很好用,可以成行的操作

  • 相关阅读:
    LeetCode 217. 存在重复元素
    LeetCode 48. 旋转图像
    LeetCode 35. 搜索插入位置
    LeetCode 27. 移除元素
    LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
    LeetCode 328. 奇偶链表
    LeetCode 160. 相交链表 (找出两个链表的公共结点)
    LeetCode 26. 删除排序数组中的重复项
    LeetCode 836. 矩形重叠
    数据库
  • 原文地址:https://www.cnblogs.com/yuanlaihenkuang/p/7008529.html
Copyright © 2020-2023  润新知