Java I/O学习总结

本文主要介绍了Java I/O流的分类,包括字节流、字符流、输入流、输出流、节点流和处理流,并详细讲解了缓冲流、转换流、数据流、打印流和对象流的使用。通过实例展示了文件读写、指定编码格式处理、数据类型转换及对象序列化操作。重点强调理解InputStream/OutputStream和Reader/Writer的基础原理。
摘要由CSDN通过智能技术生成

一般来说,java I/O总共有16个流需要我们熟练掌握。接下来从I/O继承关系、流的分类、选择不同流应遵循的原则三个方面对 java I/O进行梳理。
1、流的分类
按照对数据的读写方式不同可以将流分为字节流和字符流,字节流每次读写都是以字节为单位,而字符流则是按编码字符为单位对多个字节进行字符编码然后返回字符。
按照流的指向可将流分为输入流和输出流,输入流是指将数据读到内存,输出流则是指将内存中的数据写到磁盘。
除了分为字节流/字符流、输入流/输出流,还可以按实现的功能分为节点流和处理流,
节点流:直接对数据源进行读写
处理流:对已经存在的流进行连接和封装,其构造方法必须要带一个其他流作为参数。处理流又包含5个类型:缓冲流、转换流、数据流、打印流和对象流。
2、流的继承体系:
这里写图片描述
3、选择流应遵循的规则
(1)目的:写入or读取?
写入:OutputStream/Writer
读取:InputStream/Reader
(2)是否操纵存文本?
是:优先选择字符流,Reader/Writer
否:只能选择字节流,Stream
(3)是否需要使用缓冲?
BufferedInputStream/BufferedOutputStream、BufferedReader/BufferedWriter

4、常用流的使用举例
通常使用流有四个步骤:
创建文件对象——>创建流——>使用流进行读写——>关闭流
(1)文件输入/输出流:
字节流:FileInputStream/FileOutputStream
BufferedInputStream/BufferedOutputStream
字符流:FileReader/FileWriter
BufferedReader/BufferedWriter

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

/**
 * @author liwenkai
 *
 * 2016年11月28日
 */
public class BufferReaderAndWriterExample {
   
    /**
     * 1、FileInputStream类:
     * 常用方法:int read():读取单个字节,返回该符号的ASCⅡ码
     *       int read(byte []byt):将此输入流中最多byt.length个字节读取到数组byt中,返回读入的总字节数
     *       int read(byte []byt,int off,int len):将此输入流中从偏移量off开始,最多len个字节读取到数组byt中,
     *         返回读入的总字节数
     * @param inFileName 要读取的文件位置
     */
    public void fileInputStream(String inFileName){
        //首先生成文件对象
        File file = new File(inFileName);
        try {
            //创建输入流对象
            FileInputStream in = new FileInputStream(file);
            //创建byte数组。将文件中读取的信息放到数组中
            byte []byt = new byte[100];
            int len = in.read(byt);//返回写入到数组中的总字节数
            // int x = in.read(); //无参的read方法返回的是该字符所对应ASCⅡ码,例如,若读到'a',则返回97
            System.out.println(len);
            //System.out.println("文件中的信息是:" + new String(byt,0,len));
            in.close();
        } catch (Exception e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值