用字节流和字符流读取写入数据

一、字节流:

  1. 处理单位:

    • 字节流以字节(8位二进制数据)为单位处理数据。
  2. 主要类:

    • 输入流:InputStream 是所有字节输入流的基类。
    • 输出流:OutputStream 是所有字节输出流的基类。
  3. 应用场景:

    • 适合处理二进制文件,如图像、音频、视频等。
    • 适合处理网络传输数据,因为网络通信通常基于字节流。
    • 适合处理任何非文本数据。
  4. 常用类:

    • FileInputStream 和 FileOutputStream:用于从文件中读取和写入字节数据。
    • ByteArrayInputStream 和 ByteArrayOutputStream:用于从字节数组中读取和写入字节数据。
    • Socket.getInputStream() 和 Socket.getOutputStream():用于从网络连接中读取和写入字节数据

 1、写入方式:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//字节流写入
public class xieru {
    public static void main(String[] args) {
        //定义字符串变量,存入要写入的值
        String data="hello";
        try {
            //创建一个 FileOutputStream 对象,用于写入名为 "data.txt" 的文件。
            // 如果文件不存在,它将被创建;如果文件已存在,它的内容将被覆盖。
            FileOutputStream fileOutputStream = new FileOutputStream("data.txt");
            //这里使用 getBytes() 方法将字符串转换为字节数组,并通过 FileOutputStream 写入文件。
            fileOutputStream.write(data.getBytes());
            //这会在尝试打开不存在的文件时抛出。
        } catch (FileNotFoundException e) {
            //抛出一个新的 RuntimeException,并将原始异常作为原因传递给构造函数。
            throw new RuntimeException(e);
            //捕获 IOException,这会在 I/O 操作中出现错误时抛出。
        } catch (IOException e) {
            //同样抛出一个新的 RuntimeException,并将原始异常作为原因传递给构造函数。
            throw new RuntimeException(e);
        }

    }
}

2、读取方式:

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

//从文件读取数据
public class duqu {
    public static void main(String[] args) throws IOException {
//创建一个 FileInputStream 对象,用于读取名为 "data.txt" 的文件。
            FileInputStream fileInputStream = new FileInputStream("data.txt");
            int data;

           //循环读取文件中的数据。read() 方法每次读取一个字节
        // 如果文件结束,则返回 -1。
        while ((data=fileInputStream.read())!=-1){
            //将读取到的字节转换为字符并打印出来。
                System.out.println((char)data);
            }


    }
}

二、字符流:

  1. 处理单位:

    • 字符流以字符(通常是 16 位 Unicode 字符)为单位处理数据。
  2. 主要类:

    • 输入流:Reader 是所有字符输入流的基类。
    • 输出流:Writer 是所有字符输出流的基类。
  3. 应用场景:

    • 适合处理文本文件,如纯文本、XML、HTML 等。
    • 适合处理需要编码/解码的数据,因为字符流可以指定字符集。
  4. 常用类:

    • FileReader 和 FileWriter:用于从文件中读取和写入字符数据。
    • BufferedReader 和 BufferedWriter:用于提高读写效率,通常与 FileReader 和 FileWriter 结合使用。
    • InputStreamReader 和 OutputStreamWriter:用于将字节流转换为字符流,允许指定字符集。

 1、写入:

import java.io.FileWriter;
import java.io.IOException;

//字符流 写数据
public class xieru2 {
    public static void main(String[] args) throws IOException {
        //定义要写入的字符串
        String data="我是影片中";
        //找到data2.txt文件,如果没有就新建,有就覆盖
        FileWriter fileWriter = new FileWriter("data2.txt");
        //将字符串写入文件。
        fileWriter.write(data);
//这行代码用于关闭 FileWriter 对象。
//关闭 FileWriter 对象时,会自动调用 flush() 方法以确保所有缓冲区中的数据都被写入文件。
//此外,关闭 FileWriter 对象还会释放与之关联的系统资源。
fileWriter.close();
    }
}

 2、读取:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

//读操作   文件=》内存=》控制台    字符流
public class duqu2 {
    public static void main(String[] args) throws IOException {
        //创建一个 FileReader 对象,用于读取名为 "data2.txt" 的文件。
        FileReader fileReader = new FileReader("data2.txt");
       // 定义一个 int 类型的变量 chars,用于存储从文件中读取的每个字符。
        int chars;
        //循环读取文件中的数据。read() 方法每次读取一个字符
        // 如果文件结束,则返回 -1。
        while ((chars= fileReader.read())!=-1){
         //将读取到的字符打印到控制台。   
            System.out.println((char) chars);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值