【Java】I/O流—缓冲流的基础入门和文件拷贝的实战应用

🌺个人主页Dawn黎明开始

🎀系列专栏Java
每日一句你能坚持到什么程度,决定你能达到什么高度

📢欢迎大家关注🔍点赞👍收藏⭐️留言📝


文章目录

一.🔐字节缓冲流

📋前言

1.1🔓字节缓冲流

1.1.1🔑构造方法

1.1.2🔑成员方法

1.1.3🔑实例练习

1.2🔓字符缓冲流

1.2.1🔑构造方法

1.2.2🔑成员方法

1.2.3🔑实例练习

二.🔐文件拷贝

2.1🔓字节流文件拷贝

2.1.1🔑基本字节流拷贝

2.1.2🔑缓冲字节流拷贝

2.2🔓字符流文件拷贝

2.2.1🔑基本字符流拷贝

2.2.2🔑缓冲字符流拷贝

三、🔐I/O流与集合综合实例

3.1🔓把ArrayList集合中的字符串数据存储到文本文件

3.1.1🔑分析

3.1.2🔑代码如下

3.2🔓从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合

3.2.1🔑分析

3.2.2🔑代码如下


一.🔐字节缓冲流

📋前言

在代码中使用缓冲流(Buffered Streams)有许多好处,特别是在处理I/O操作时,它们可以显著提高性能和效率。缓冲流在底层通过缓冲区减少对磁盘或网络的实际读写次数,从而提高了读写性能。相比于直接操作底层输入输出流,缓冲流可以减少频繁的磁盘或网络访问,提升整体的I/O性能。

1.1🔓字节缓冲流

1.1.1🔑构造方法

1.1.2🔑成员方法

1.1.3🔑实例练习

🚩(BufferedOutputStream)实例练习

代码如下👇🏻

package BufferedOutputStreamDemo;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedOutputStreamDemo1 {public static void main(String[] args) throws IOException {
//		FileOutputStream fos=new FileOutputStream("a.txt",true);
//		BufferedOutputStream bos = new BufferedOutputStream(fos);BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));bos.write("java".getBytes());bos.write("\n中国".getBytes());bos.close();}
}

🚩(BufferedInputStream)实例练习

代码如下👇🏻

package BufferedInputStreamDemo;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamDemo1 {public static void main(String[] args) throws IOException {BufferedInputStream bis=new BufferedInputStream(new FileInputStream("a.txt"));byte [] bys=new byte[1024];int len=0;while((len=bis.read(bys))!=-1) {String string=new String(bys,0,len);System.out.print(string+"\t");
//			System.out.print(new String(bys,0,len));}bis.close();}
}

1.2🔓字符缓冲流

1.2.1🔑构造方法

1.2.2🔑成员方法

继承Writer和Reader类的成员方法

 字符缓冲流的特殊方法:

BufferedWriter:

public void newLine():根据系统来决定换行符

BufferedReader:

public String readLine():一次读取一行数据

包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

1.2.3🔑实例练习

代码如下👇🏻

package CopyDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileDemo5 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));BufferedReader br=new BufferedReader(new FileReader("b.txt"));String string=null;while((string=br.readLine())!=null) {bw.write(string);bw.newLine();bw.flush();}bw.close();br.close();}
}

二.🔐文件拷贝

2.1🔓字节流文件拷贝

2.1.1🔑基本字节流拷贝

🚩(一次读写一个字节)

package CopyDemo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo1 {public static void main(String[] args) throws IOException {// 封装数据源FileInputStream fis = new FileInputStream("a.txt");// 封装目的地FileOutputStream fos = new FileOutputStream("b.txt");//一次读写一个字节int b = 0;while ((b = fis.read()) != -1) {fos.write(b);}// 释放资源(先关谁都行)fos.close();fis.close();}}

代码如下👇🏻

🚩(一次读写一个字节数组)

package CopyDemo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo1 {public static void main(String[] args) throws IOException {// 封装数据源FileInputStream fis = new FileInputStream("a.txt");// 封装目的地FileOutputStream fos = new FileOutputStream("b.txt");//一次读写一个字节int b = 0;while ((b = fis.read()) != -1) {fos.write(b);}// 释放资源(先关谁都行)fos.close();fis.close();}}

2.1.2🔑缓冲字节流拷贝

🚩(一次读写一个字节)

代码如下👇🏻

​
package CopyDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo3 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));BufferedInputStream  bis=new BufferedInputStream(new FileInputStream("b.txt"));int b=0;while((b=bis.read())!=-1) {bos.write(b);}bos.close();bis.close();}}​

🚩(一次读写一个字节数组)

代码如下👇🏻

​
package CopyDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo4 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));BufferedInputStream  bis=new BufferedInputStream(new FileInputStream("b.txt"));byte[] bys=new byte[1024];int len=0;while((len=bis.read(bys))!=-1) {bos.write(bys,0,len);}bos.close();bis.close();}
}​

2.2🔓字符流文件拷贝

2.2.1🔑基本字符流拷贝

2.2.2🔑缓冲字符流拷贝

代码如下👇🏻

package CopyDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileDemo5 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));BufferedReader br=new BufferedReader(new FileReader("b.txt"));String string=null;while((string=br.readLine())!=null) {bw.write(string);bw.newLine();bw.flush();}bw.close();br.close();}
}

三、🔐I/O流与集合综合实例

3.1🔓把ArrayList集合中的字符串数据存储到文本文件

3.1.1🔑分析

分析:

    ArrayList集合里存储的是字符串。

   遍历ArrayList集合,把数据获取到。

   然后存储到文本文件中。

   (文本文件说明使用字符流)

数据源

   ArrayList<String> -- 遍历得到每一个字符串数据

目的地

   a.txt -- FileWriter -- BufferedWriter

3.1.2🔑代码如下

package CopyDemo;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;public class ArrayListToFileDemo {public static void main(String[] args) throws IOException {// 封装数据与(创建集合对象)ArrayList<String> array = new ArrayList<String>();array.add("hello");array.add("world");array.add("java");// 封装目的地BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));// 遍历集合for (String s : array) {// 写数据bw.write(s);bw.newLine();bw.flush();}// 释放资源bw.close();}
}

3.2🔓从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合

3.2.1🔑分析

分析

     通过题目的意思我们可以知道如下的一些内容,

     数据源是一个文本文件。

     目的地是一个集合。

     而且元素是字符串。

数据源

 b.txt -- FileReader -- BufferedReader

目的地

 ArrayList<String>

3.2.2🔑代码如下

package CopyDemo;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;public class FileToArrayListDemo {public static void main(String[] args) throws IOException {// 封装数据源BufferedReader br = new BufferedReader(new FileReader("b.txt"));// 封装目的地(创建集合对象)ArrayList<String> array = new ArrayList<String>();// 读取数据存储到集合中String line = null;while ((line = br.readLine()) != null) {array.add(line);}// 释放资源br.close();// 遍历集合for (String s : array) {System.out.println(s);}}
}

🌺建议大家亲自动手操作,学编程,多实践练习是提升编程技能的必经之路。欢迎大家在评论区进行讨论和指正

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

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

相关文章

RapidSSL证书

RapidSSL是一家经验丰富的证书颁发机构&#xff0c;主要专注于提供标准和通配符SSL证书的域验证SSL证书。在2017年被DigicertCA收购后&#xff0c;RapidSSL改进了技术并开始使用现代基础设施。专注于为小型企业和网站提供基本安全解决方案的SSL加密。RapidSSL它具有强大的浏览器…

ZYNQ_project:key_led

条件里是十进制可以不加进制说明&#xff0c;编译器默认是10进制&#xff0c;其他进制要说明。 实验目标&#xff1a; 模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; include "para.v"module key_filter (input wire …

python3.8.10虚拟环境安装talib总报平台不匹配

目录 环境&#xff1a; 需求&#xff1a; 问题&#xff1a; 概述 过程及解决 解决方案总结 环境&#xff1a; 操作系统&#xff1a;window10、64位 开发工具&#xff1a;pycharm python版本&#xff1a;python3.8.10 需求&#xff1a; 在python3.8.10的虚拟环境中安…

短短 45 分钟发布会,OpenAI 如何再次让 AI 圈一夜未眠

目录 前言 1. GPT-4 Turbo&#xff0c;更快&#xff0c;更省钱 2. GPT Store 来了&#xff01; 3. 零代码创建 AI Agent 前言 对于 AI 行业从业者来说&#xff0c;刚刚可能是一夜未眠。 北京时间 11 月 7 日凌晨&#xff0c;美国人工智能公司 OpenAI 的开发者大会正式开…

HTTParty库数据抓取代码示例

使用HTTParty库的网络爬虫程序&#xff0c; ruby require httparty # 设置服务器 proxy_host proxy_port # 使用HTTParty库发送HTTP请求获取网页内容 response HTTParty.get(/, :proxy > { :host > proxy_host, :port > proxy_port }) # 打印获取的网页内容 …

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录 福利来袭Amazon Neptune什么是图数据库为什么要使用图数据库什么是Amazon NeptuneNeptune 的特点 快速入门环境搭建notebook 图神经网络快速构建加载数据配置端点Gremlin 查询清理 删除环境S3 存储桶删除 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转…

Sketch是什么软件,如何收费和获得免费版

Sketch软件为设计师构建了一个优秀的本地Mac应用程序。Sketch是整个设计过程的平台&#xff0c;通过基于Web的工具共享工作&#xff0c;获取反馈&#xff0c;测试原型&#xff0c;并将其移交给任何浏览器。Sketch软件的定价根据不同的许可类型和订阅计划而变化。本文从Sketch软…

LeetCode算法题解(回溯、难点)|LeetCode332. 重新安排行程

LeetCode332. 重新安排行程 题目链接&#xff1a;332. 重新安排行程 题目描述&#xff1a; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08…

密码学 - RSA签名算法

实验九 RSA签名算法- 一、实验目的 通过实验掌握GMP开源软件的用法&#xff0c;理解RSA数字签名算法&#xff0c;学会RSA数字签名算法程序设计&#xff0c;提高一般数字签名算法的设计能力。 二、实验要求 (1)基于GMP开源软件&#xff0c;实现RSA签名算法。 (2)要求有对应…

浅谈多回路电表在荷兰光伏系统配电项目中的应用

1.背景信息 Background&#xff1a; 随着全球化石能源&#xff08;石油&#xff0c;煤炭&#xff09;越来越接近枯竭&#xff0c;污染日趋严重&#xff0c;气候日益变暖等问题&#xff0c;全球多个国家和地区相继出台了法规政策&#xff0c;推动了光伏产业的发展。但是现有的光…

MySQL索引的数据结构

1. 索引及其优缺点 1.1 索引概述 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 索引的本质&#xff1a;索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”&#xff0c;满足特定查找算法。这些数据结…

合成数据在医疗保健行业的案例研究

从机器人辅助手术到医学成像技术&#xff0c;人工智能在医疗保健领域的应用正在迅速改变医疗保健行业&#xff0c;并改善服务成本和服务质量。例如&#xff0c;埃森哲表示&#xff0c;到 150 年&#xff0c;人工智能临床健康应用每年可以为美国医疗保健行业节省 2026 亿美元。 …

Spring RabbitMQ那些事(1-交换机配置消息发送订阅实操)

这里写目录标题 一、序言二、配置文件application.yml三、RabbitMQ交换机和队列配置1、定义4个队列2、定义Fanout交换机和队列绑定关系2、定义Direct交换机和队列绑定关系3、定义Topic交换机和队列绑定关系4、定义Header交换机和队列绑定关系 四、RabbitMQ消费者配置五、Rabbit…

各大电商平台关于预制菜品种酸菜鱼销售量

# 导入需要的包 library(rvest) # 用于网页抓取 library(tidyverse) # 用于数据处理 library(stringr) # 用于字符串处理# 设置代理信息 proxy_host <- "www.duoip.cn" proxy_port <- 8000# 设置要爬取的网页 url <- "https://jshk.com.cn/products/sa…

【正点原子STM32连载】 第四十九章 SD卡实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第四…

Spring的循环依赖问题

文章目录 1.什么是循环依赖2.代码演示3.分析问题4.问题解决5.Spring循环依赖6. 疑问点6.1 为什么需要三级缓存6.2 没有三级缓存能解决吗&#xff1f;6.3 三级缓存分别什么作用 1.什么是循环依赖 上图是循环依赖的三种情况&#xff0c;虽然方式有点不一样&#xff0c;但是循环依…

Yolov8模型训练报错:torch.cuda.OutOfMemoryError

最近在使用自己的数据训练Yolov8模型的时候遇到了很多错误&#xff0c;下面将逐一解答。 问题报错 在训练过程中红字报错&#xff1a;torch.cuda.OutOfMemoryError: CUDA out of memory. 后面还会跟着一大段报错&#xff1a; Tried to allocate XXX MiB (GPU 0; XXX GiB to…

【云原生】使用nginx反向代理后台多服务器

背景 随着业务发展&#xff0c; 用户访问量激增&#xff0c;单台服务器已经无法满足现有的访问压力&#xff0c;研究后需要将后台服务从原来的单台升级为多台服务器&#xff0c;那么原来的访问方式无法满足&#xff0c;所以引入nginx来代理多台服务器&#xff0c;统一请求入口…

OLED透明屏的应用场景有哪些

OLED透明屏在其他领域的应用包括&#xff1a; 商业展示&#xff1a;在商业展示中&#xff0c;OLED透明屏可以作为展示窗口&#xff0c;展示产品信息、广告宣传和品牌形象。通过将透明屏幕安装在展柜、货架或商业窗口中&#xff0c;可以吸引顾客的注意力并提供引人注目的展示效…

不用开会员就能在线编辑、管理及分享各类地理空间数据!

「四维轻云」作为一款地理空间数据云管理平台&#xff0c;具有三维模型、正射影像、激光点云、数字高程模型、人工模型和矢量数据等地理空间数据的在线管理、浏览及分享等功能&#xff0c;致力于为用户提供更加方便、快捷的地理空间数据解决方案。 一、发布、管理超大空间数据…