day18周日休息_chap-IO3_字节输入_FileInputStream、BufferedInputStream

IO流部分记忆体系整理

这篇记录的是FileInputStream、BufferedInputStream

1.FileInputStream【处理字节流。方向:文件向内存】

父类InputStream

FileInputStream类对象下面简写为in

(1)用指定输入流in,接收读取到的文件内容

(2)最后通过close()方法结束读取

(3)字符数组长度问题:

读取到的内容用字符数组chars接收,chars不够长的情况这里没写

代码例子:

package com.cskaoyan.bytestream.in;

import java.io.FileInputStream;
import java.io.IOException;

/***
 * 【对比序列】
 *
 * 【1.】FileInputStream、FileOutputStream        【字节】父类:InputStream、OutputStream
 *   (1)字节输入流        字节输出流
 *
 * 【2.】读数据
 * 用字节输入流的子类 FileInputStream 加了文件在原类名头
 * 创建流对象
 * 用这个流对象调用read()方法,读出字节
 * 调用read()方法,但是加参数:read(字节数组),读出的是字符
 *
 * 注意:1.中间变量readCount
 *          语句:readCount = in.read(bytes)
 *          这里输入流in对象调用read方法,一次性读一长串字节,如果byte放不下,会循环读
 *
 *      2.中间变量readData
 *
 * 【3.】创建目录:
 * new File(".\\test_root\\").mkdirs();
 * 可以创建跟当前项目同目录的文件夹,方便在idea中访问
 *
 * 【4.】BufferedInputStream、BufferedOutputStream【字节】父类:InputStream、OutputStream
 *      指定缓冲字节输入流    指定缓冲的字节输出流
 *
 * 【5.】利用装饰器模式,使用BufferedInputStream
 *
 * 【6.】引入字符流
 *
 * 【7.】OutputStreamWriter、InputStreamReader   【字符】父类:Writer、Reader
 *   (1)字符输出流            字符输入流
 *   (2)指定字符集的W         指定字符集的R
 *   (3)转化流W              转化流R
 *
 * 【8.】所有这种都算带缓冲,要flush()操作。OutputStreamWriter,以及之前的BufferedInputStream
 *
 * 【9.】FileWriter、FileReader                   【字符】
 *   (1)简化字符流W  简化字符流R
 *
 * 【10.】BufferedWriter、BufferedReader          【字符】
 *       指定缓冲字符输出流
 *
 * 【11.】DataOutputStream、DataInputStream
 *    (1)数据输出流          数据输入流
 *       以与机器无关方式从底层输入/出流中读取基本 Java 数据类型
 *
 * 【12.】打印
 *
 * 【13.】对象
 */
public class Demo2 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象
        FileInputStream in = new FileInputStream("../day16_io01/a.txt");

        //读取数据
        //readSingle(in);
        //readMuti(in);
        byte[] bytes = new byte[1024];
        int readCount = in.read(bytes, 0, bytes.length);
        System.out.println(new String(bytes,0,readCount));

        //close
        in.close();
    }

    private static void readMuti(FileInputStream in) throws IOException {
        byte[] bytes = new byte[1024];
        int readCount = in.read(bytes);
        //字节数组转化成字符串
        String s = new String(bytes, 0, readCount);
        System.out.println(s);
    }

    private static void readSingle(FileInputStream in) throws IOException {
        //read() 返回的是读取到的一个字节值
        int readData = in.read();
        System.out.println(((char) readData));

        int readData2 = in.read();
        System.out.println(((char) readData2));

        int readData3 = in.read();
        System.out.println(((char) readData3));

        int readData4 = in.read();
        System.out.println(((char) readData4));

        int readData5 = in.read();
        System.out.println((readData5));
    }
}

2.BufferedInputStream【处理字节流。方向:文件向内存】

父类InputStream

BufferedInputStream类对象下面简写为bf

(1)用指定输入流bf,接收读取到的文件内容

(2)最后通过close()方法结束读取

(3)字符数组长度问题:同上,chars不够长的情况这里没写

代码例子:

package com.cskaoyan.bytestream.buff;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) throws IOException {
        BufferedInputStream br = new BufferedInputStream(new FileInputStream("a.txt"));
        //读数据
        int readData = br.read();
        System.out.println(((char) readData));
        //close
        br.close();
    }
}

 

你可能感兴趣的:(Java)