Java IO: 使用 `BufferedReader` 和 `BufferedWriter` 进行高效文件操作

在 Java 中,文件 I/O 操作是常见的任务。BufferedReaderBufferedWriter 是用于读取和写入文件的高效类,它们通过缓冲机制显著提高了 I/O 操作的性能。本文将介绍如何使用 BufferedReaderBufferedWriter,并提供具体的示例代码。

BufferedReader 类概述

BufferedReader 类是 Java 中用于高效读取字符输入流的类,它继承自 Reader。通过缓冲机制,BufferedReader 可以减少实际读取操作的次数,从而提高读取性能。

BufferedReader 的基本用法

要使用 BufferedReader 读取文件内容,需要先创建一个 BufferedReader 对象,通常通过 FileReader 作为参数传递。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class BufferedReaderExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用 BufferedReader 按行读取 example.txt 文件的内容,并将其打印到控制台。注意,我们使用了 try-with-resources 语句来自动关闭 BufferedReader

读取整个文件内容

BufferedReader 还可以读取整个文件内容,并将其存储在一个 StringBuilder 对象中。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class BufferedReaderStringBuilderExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {StringBuilder content = new StringBuilder();String line;while ((line = br.readLine()) != null) {content.append(line).append(System.lineSeparator());}System.out.println(content.toString());} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用 BufferedReader 读取整个文件的内容,并将其存储在 StringBuilder 对象中,最后打印到控制台。

BufferedWriter 类概述

BufferedWriter 类是 Java 中用于高效写入字符输出流的类,它继承自 Writer。通过缓冲机制,BufferedWriter 可以减少实际写入操作的次数,从而提高写入性能。

BufferedWriter 的基本用法

要使用 BufferedWriter 写入文件内容,需要先创建一个 BufferedWriter 对象,通常通过 FileWriter 作为参数传递。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class BufferedWriterExample {public static void main(String[] args) {try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {bw.write("Hello, World!");} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用 BufferedWriter 将字符串 “Hello, World!” 写入 example.txt 文件。使用 try-with-resources 语句确保 BufferedWriter 在完成写操作后自动关闭。

追加写入文件

BufferedWriter 还支持追加写入文件,只需在 FileWriter 的构造函数中传入 true 作为第二个参数即可。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class BufferedWriterAppendExample {public static void main(String[] args) {try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt", true))) {bw.write("Appended text.");} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们将字符串 “Appended text.” 追加写入 example.txt 文件,而不是覆盖原有内容。

结合使用 BufferedReaderBufferedWriter

在实际开发中,常常需要结合使用 BufferedReaderBufferedWriter 来读取和写入文件内容。以下是一个示例,展示如何读取一个文件的内容并将其写入另一个文件。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class FileCopyExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("input.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {String line;while ((line = br.readLine()) != null) {bw.write(line);bw.newLine();}} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用 BufferedReader 按行读取 input.txt 文件的内容,并使用 BufferedWriter 将其写入 output.txt 文件。通过 try-with-resources 语句确保两个流都能在操作完成后自动关闭。

总结

BufferedReaderBufferedWriter 是 Java 中用于处理文件 I/O 的高效类,它们通过缓冲机制显著提高了读取和写入操作的性能。\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redisson框架

1. Redisson锁与Redis订阅与发布模式的联系: Redisson锁中,使用订阅发布模式去通知等待锁的客户端:锁已经释放,可以进行抢锁。 publish channel_name message:将消息发送到指定频道 解锁时,在Lua解锁脚本…

如何把项目文文件/文件夹)上传到Gitee(全网最细)

目录 1、首先必须要有一个Gitee官网的账号 2、点击右上角的号,点击新建仓库 3、按照下图步骤,自己起仓库名字,开发语言 4、点击初始化readme文件 5、在自己的电脑上选择姚上传的文件夹,或者文件,这里都是一样的&a…

内网渗透:端口转发(SSH隧道)

SSH:两台设备之间进行远程登录的协议(SSH本身就是一个隧道协议) 远程文件传输scp命令(scp是基于SSH的) 拓扑: SSH隧道搭建的条件 1.获取到跳板机权限 2.跳板机中SSH服务启动 SSH端口转发分类&#xff1…

C语言 实现链表的各种功能

C语言实现链表的各种功能 链表的定义 链表是一种数据结构,它是由一系列节点组成的线性结构。每个节点包含两个部分:数据和指针。数据部分存储着实际的数据,指针部分指向下一个节点。 链表的特点是: 每个节点都可以自由地插入或…

python爬虫:实现程序模拟点击搜索等任务,爬取动态网页

引言: 爬虫也被称为网络蜘蛛(Spider),是一种自动化的软件程序,能够在互联网上漫游,按照一定的规则和算法抓取数据。 爬虫技术广泛应用于搜索引擎、 数据挖掘 、信息提取等领域,是互联网技术的重要组成部分。 摘要: 作为爬虫的初学者,网页越简单越好,因为网页的结构…

正点原子rk3588烧录linux和安卓镜像

1、烧录 Linux buildroot 系统镜像 1.1 进入 Loader 模式: 按住开发板上的 V(音量)按键不松,给开发板 上电或复位,此时烧录工具会提示:发现一个 LOADER 设备,表示开发板此时已经处于 Loader 模…

【爆肝34万字】从零开始学Python第2天: 判断语句【入门到放弃】

目录 前言判断语句True、False简单使用作用 比较运算符引入比较运算符的分类比较运算符的结果示例代码总结 逻辑运算符引入逻辑运算符的简单使用逻辑运算符与比较运算符一起使用特殊情况下的逻辑运算符 if 判断语句引入基本使用案例演示案例补充随堂练习 else 判断子句引入else…

Node.js 事件循环的工作流程二

在每个tick的过程中,如何判断是否有事件需要处理 在 Node.js 的事件循环中,每个循环迭代称为一个 "tick"。在每个 tick 过程中,事件循环需要判断是否有事件需要处理。这个过程主要依赖于检查各个阶段的队列是否有待处理的回调函数…

第3章:Electron的核心概念(2)

3.4 预加载脚本 预加载脚本在渲染进程加载前执行,允许在渲染器上下文中暴露自定义 API,并提供与主进程安全通信的桥梁。使用预加载脚本可以提高应用的安全性,尤其是在启用了 contextIsolation 的情况下。 3.4.1 创建预加载脚本 预加载脚本…

【Docker Compose】掌握容器资源管理:高效限制CPU与内存使用

【Docker Compose】掌握容器资源管理:高效限制CPU与内存使用 一、Docker Compose 介绍1.1 Docker Compose简介1.2 Docker Compose V2简介1.3 Docker Compose V1与V2版本区别1.4 docker-compose.yaml部署文件介绍二、检查本地docker环境2.1 本地环境规划2.2 检查docker版本2.3 …

43.三倍游戏

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/390 题目描述 三倍游戏是一种单人游戏。玩…

基于51单片机心形LED流水灯电路原理图、PCB和源程序(SCH、PCB源文件)

资料下载地址:基于51单片机心形LED流水灯电路原理图、PCB和源程序(SCH、PCB源文件) 1、单片机心形LED流水灯功能说明: 单片机:无论是散件还是成品,单片机里面都烧录有LED 流水灯的程序,装上单片…

TCP重传机制

TCP重传机制是为了确保数据可靠传输而设计的,当传输的数据包丢失或损坏时,TCP会重新发送这些数据包。TCP重传主要有以下几种方式: 超时重传(Timeout Retransmission): 当发送方发送一个数据包后&#xff…

【Promise】聊聊任务队列

历史小剧场 现实是残酷的,而今这个世界,要活下去,必死需要更大的勇气。 但崇祯的死,并非懦弱,而是一种态度,负责人的态度。 我说过,所谓王朝,跟公司单位差不多,单位出了事…

fly_bid项目

Ncurses库&#xff1a; 提供了创建窗口界面&#xff0c;移动光标&#xff0c;产生颜色&#xff0c;处理键盘按键功能问题等功能。 vim界面&#xff0c;内核配置界面&#xff08;make menuconfig&#xff09; #include<stdio.h> #include<curses.h>int main(int …

【UE 网络】RPC远程过程调用 入门篇

目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xff1a;【UE 网络】RPC远程过程调用 入门篇❣️ 寄语…

(七)React:useEffect的理解和使用

1. useEffect的概念理解 useEffect是一个React Hook函数&#xff0c;用于React组件中创建不是由事件引起而是由渲染本身引起的操作&#xff0c;比如发送AJAX请求&#xff0c;更改DOM等等 说明&#xff1a;上面的组件中没有发生任何的用户事件&#xff0c;组件渲染完毕之后就需…

Modbus TCP与TCP/IP协议间的差异与应用场景

Modbus TCP概述 Modbus协议简介 Modbus是一种专为工业自动化系统设计的通信协议&#xff0c;采用主从模式&#xff0c;即一个主设备&#xff08;通常是计算机或可编程逻辑控制器&#xff09;与多个从设备&#xff08;如传感器、执行器等&#xff09;进行通信。Modbus协议具有…

项目优化方案之---实现单设备登录限制

对于一些付费会员或者一些商业项目&#xff0c;为了保证单个用户的账号权益不会被滥用&#xff0c;并且提高系统的安全性&#xff0c;我们会限制单个账号在同一时间内只能有一台设备登录&#xff0c; 来给系统添加共享账号的检测能能力 这里是根据jwt实现的&#xff0c;要实现…

K8S集群进行分布式负载测试

使用K8S集群执行分布式负载测试 本教程介绍如何使用Kubernetes部署分布式负载测试框架&#xff0c;该框架使用分布式部署的locust 产生压测流量&#xff0c;对一个部署到 K8S集群的 Web 应用执行负载测试&#xff0c;该 Web 应用公开了 REST 格式的端点&#xff0c;以响应传入…