Java基础 - IO

本文详细介绍了Java中的IO流,包括概念、流的分类,如字节流和字符流,以及流的关闭顺序。此外,还讨论了ReadLine方法、字符流与字节流的区别,并给出了多个实例,如字节流、字符流及其缓冲流在文件复制中的应用。
摘要由CSDN通过智能技术生成

Java基础 - IO

1. 概念

流:在Java中所有的数据都是使用流读写的

  1. 流是一种有顺序的,有起点和终点的字节集合。是对数据传输的总称和抽象
  2. 流的本质是数据传输

2. 流的分类

Java中的输入、输入流是相对于程序而言的

  1. 按照流向分:
    • 输入流:把文件中的内容读取到内存中
    • 输出流:把内存中的数据写入到文件中
  2. 按照处理数据的单位分:
    • 字节流:以Stream结尾的都是字节流
    • 字符流:以Reader、Writer结尾的是字符流

3. 流的关闭顺序

重点:流在使用完成之后一定要关闭

  • 一般情况下:先打开后关闭,后打开先关闭
  • 另一种情况:看流的依赖关系,如果处理流A依赖节点流B,在关闭的时候,先关闭处理流A,再关闭节点流B。当然,完全可以只关闭处理流A,因为再关闭处理流的时候,会调用其依赖的节点流的关闭方法。如果先关闭节点流,再关闭处理流就会抛出IO异常。

4. 补充

4.1 ReadLine方法

  • ReadLine()方法 只用再字符缓冲流(BufferedReader)中存在。

4.2 字符流和字节流的区别

  • 字节流操作的基本单位为字节。字符流操作的基本单位为Unicode码元 (字符)。
  • 字节流默认不使用缓冲区,字符流使用缓冲区
  • 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据。但不支持直接读取或者写入Unicode码元(字符);字符流通常处理文本类型的数据,它支持读取以及写入Unicode码元(字符)

4.3 不同编码格式下字符串所占用的字节数

编码格式\文本类型 单个英文字母(字节) 单个中文汉字(字节)
GB2312 1 2
GBK 1 2
ISO-8859-1 1 1
UTF-8 1 3

5. 实例

5.1 字节流-单字节

将文件1.txt中的内容复制到ByteStreamDemo1.txt中

import java.io.*;

/*
    字节流
 */
public class ByteStreamDemo1 {
   
    public static void main(String[] args) throws Exception {
   

        //字节输入流
        InputStream in = new FileInputStream("E:\\IOTest\\1.txt");

        //字节输出流
        OutputStream out = new FileOutputStream("E:\\IOTest\\ByteStreamDemo1.txt");

        //单字节
        int len;
        //当len = -1 的时候,证明文件的内容已经读完了
        while ((len = in.read()) != -1){
   
            out.write((char) len);
        }

        //关闭输入输出流
        out.close();
        in.close();
        
    }
}

5.2 字节流-字节数组

将文件1.txt中的内容复制到ByteStreamDemo2.txt中

import java.io.*;

/*
    字节流
        使用字节数组
 */
public class ByteStreamDemo2 {
   
    public static void main(String[] args) throws Exception {
   

        //字节输入流
        InputStream in = new FileInputStream("E:\\IOTest\\1.txt");

        //字节输出流
        OutputStream out = new FileOutputStream("E:\\IOTest\\ByteStreamDemo2.txt");

        int len;
        //字节数组
        byte[] bytes = new byte[1024];

        //每次读取1024个字节到字节数组中,然后将字节数组写入到文件中
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值