锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. 用字节流和字符流读取写入数据

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

0
  • JAVA
  • 发布于 2024-09-26
  • 0 次阅读
黄健
黄健

一、字节流:


  1. 处理单位:

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

  3. 主要类:

  4. 输入流:InputStream 是所有字节输入流的基类。

  5. 输出流:OutputStream 是所有字节输出流的基类。

  6. 应用场景:

  7. 适合处理二进制文件,如图像、音频、视频等。

  8. 适合处理网络传输数据,因为网络通信通常基于字节流。

  9. 适合处理任何非文本数据。

  10. 常用类:

  11. FileInputStream 和 FileOutputStream:用于从文件中读取和写入字节数据。

  12. ByteArrayInputStream 和 ByteArrayOutputStream:用于从字节数组中读取和写入字节数据。

  13. 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. 处理单位:

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

  3. 主要类:

  4. 输入流:Reader 是所有字符输入流的基类。

  5. 输出流:Writer 是所有字符输出流的基类。

  6. 应用场景:

  7. 适合处理文本文件,如纯文本、XML、HTML 等。

  8. 适合处理需要编码/解码的数据,因为字符流可以指定字符集。

  9. 常用类:

  10. FileReader 和 FileWriter:用于从文件中读取和写入字符数据。

  11. BufferedReader 和 BufferedWriter:用于提高读写效率,通常与 FileReader 和 FileWriter 结合使用。

  12. 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);
        }
    }
}



原文链接: https://blog.csdn.net/daibadetianshi/article/details/141057148

标签: #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.