使用三种方式读取文本文件

文章目录

  • 🍔需求
    • 🎄思路
    • ⭐代码
    • ⭐效果
    • 🛸注意

在这里插入图片描述在 Java 中,读取文件通常涉及以下几个步骤:

打开文件:首先需要创建一个文件对象,表示要读取的文件。这个文件对象可以包含文件路径、文件名等信息。

选择读取方式:在 Java 中,可以选择不同的类来实现文件的读取操作,比如 FileInputStream、BufferedReader 等。这些类提供了不同的读取方式和功能,可以根据需求选择合适的类。

读取文件内容:通过选择的读取类,可以读取文件中的内容。可以逐行读取文本文件,也可以一次性读取二进制文件等。

处理文件内容:读取文件内容后,可以对内容进行处理,比如输出到控制台、存储到变量中、进行进一步的解析等操作。

关闭文件:在读取完文件内容后,需要及时关闭文件流,释放资源,以避免资源泄露和其他问题。

总的来说,在 Java 中读取文件需要注意文件路径的设置、选择合适的读取方式、正确处理文件内容以及及时关闭文件流等方面。通过以上步骤,可以有效地实现对文件的读取操作。

🍔需求

编写程序,使用三种方式(简洁字符流一次读写一个字符、简洁字符流一次读写一个字符数组、缓冲字符流一次读写一行字符串)实现文本文件内容的拷贝。

🎄思路

当使用Java来拷贝文本文件时,可以利用字符流和缓冲字符流来进行操作。这里简单解释一下三种不同方式的思路:

  • 使用简洁字符流一次读写一个字符:
    首先创建一个FileReader来读取源文件,创建一个FileWriter来写入目标文件。
    使用一个循环来逐个读取源文件中的字符,然后逐个将其写入目标文件。
    这种方式虽然简单,但由于是逐个字符读写,可能会比较慢,特别是对于大文件。

  • 使用简洁字符流一次读写一个字符数组:
    与第一种方式类似,也是创建FileReaderFileWriter
    不过这次使用一个字符数组作为缓冲区,通过循环读取一定长度的字符数组,然后将整个数组写入目标文件。
    这种方式相比逐个字符读写更高效,因为减少了IO操作的次数。

  • 使用缓冲字符流一次读写一行字符串:
    创建BufferedReader来按行读取源文件的内容,创建BufferedWriter来按行写入目标文件。
    利用readLine()方法逐行读取源文件中的内容,并将每行内容写入目标文件。
    这种方式更高效,因为它可以一次性读取和写入整行文本,减少了IO操作的次数。

总的来说,这三种方式都是通过逐个字符、字符数组或者整行文本来进行读写操作,其中第三种方式使用了缓冲字符流,可以进一步提高效率。

⭐代码

package org.Test6;import java.io.*;public class copy1 {public static void main(String[] args) {String sourceFile = "F://aa.txt";String destinationFile = "F://bb.txt";// 使用简洁字符流一次读写一个字符copyFileUsingCharacterStreams(sourceFile, destinationFile);// 使用简洁字符流一次读写一个字符数组copyFileUsingCharacterArray(sourceFile, destinationFile);// 使用缓冲字符流一次读写一行字符串copyFileUsingBufferedReader(sourceFile, destinationFile);}private static void copyFileUsingCharacterStreams(String sourceFile, String destinationFile) {try (Reader reader = new FileReader(sourceFile);Writer writer = new FileWriter(destinationFile)) {int character;while ((character = reader.read()) != -1) {writer.write(character);}System.out.println("文本文件拷贝成功File copied using character streams.");} catch (IOException e) {e.printStackTrace();}}private static void copyFileUsingCharacterArray(String sourceFile, String destinationFile) {try (Reader reader = new FileReader(sourceFile);Writer writer = new FileWriter(destinationFile)) {char[] buffer = new char[1024];int charactersRead;while ((charactersRead = reader.read(buffer)) != -1) {writer.write(buffer, 0, charactersRead);}System.out.println("文本文件拷贝成功File copied using character array.");} catch (IOException e) {e.printStackTrace();}}private static void copyFileUsingBufferedReader(String sourceFile, String destinationFile) {try (BufferedReader reader = new BufferedReader(new FileReader(sourceFile));BufferedWriter writer = new BufferedWriter(new FileWriter(destinationFile))) {String line;while ((line = reader.readLine()) != null) {writer.write(line);writer.newLine();}System.out.println("文本文件拷贝成功File copied using buffered reader.");} catch (IOException e) {e.printStackTrace();}}
}

⭐效果

在这里插入图片描述
在这里插入图片描述

🛸注意

BufferedReader是用于按行读取字符流数据的缓冲字符流,而FileReader是用于读取字符文件的简洁字符流。因此,当需要读取字符数组时,应该使用FileReader而不是BufferedReader。

BufferedReader的readLine()方法是以行为单位读取数据的,它返回的是一行文本字符串。而FileReader的read(char[] cbuf)方法可以用来读取字符数组数据,并将读取的字符存储到指定的字符数组中。

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

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

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

相关文章

使用canvas实现图纸标记及回显

图纸 图纸标记后的效果图 最近做的一个qms项目里面,需要前端在图纸上实现标记及标记后的内容还要能够回显,然后后端通过标记的点,去读取标记图纸的内容,如一些公式、数据之类的,目前实现的功能有 在图纸上面进行矩形…

Mysql 索引、锁与MVCC等相关知识点

文章目录 Mysql锁的类型锁使用MVCC快照读和当前读读视图【Read View】串行化的解决 索引类型存储方式区分逻辑区分实际使用区分索引失效情况 索引建立规范SQL编写规范exlpain字段解析ACID的原理日志引擎慢SQL整合SpringBoot博客记录 Mysql锁的类型 MySQL中有哪些锁&#xff1a…

Flutter:构建美观应用的跨平台方案

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C#创建第一个PIESDK模版的项目

目录 环境配置创建项目方式 环境配置 1软件安装 通过安装光盘或者U盘等介质读取PIE软件的安装程序和使用文档。程序安装过程比较简单,软件本身不借助与任何第三方程序,直接双击安装程序【PIESDK.Net_V6.3_Windows_X64.exe】安装文件,即可安装…

尚硅谷vue全家桶(上)

vue2 简介第一天第二天 第三天第四天第五天 第六天第七天第八天 第九天 网课链接(半个月拿下) 简介 需要提前会的东西 中文文档链接点下面 vue.js 要会查文档用API 第一天 清除提示1 再文档中下载开发版本浏览器安装vue devtools插件 打开允许访问URL…

【C语言】字符函数与字符串函数以及内存函数 { 超详细攻略,一篇学会 }

今日分享:字符、字符串函数和内存函数 内存函数就是对内存进行操作的函数 字符串函数就是对字符串进行操作的函数 字符函数就是对字符进行操作的函数 str前缀的函数是字符串函数,头文件string.h mem前缀的函数是内存函数,头文件stdlib.h 字符…

25考研数据结构复习·3.3.2栈和队列的应用——表达式求值

三种算术表达式 中缀表达式 ((15/(7-(11)))*3)-(2(11)) 由三个部分组成:操作数、运算符、界限符 运算符在两个操作数中间:ab;ab-c;ab-c*d ❗后缀表达式 逆波兰表达式 运算符在两个操作数后面:ab;abc-或ab…

python知识点总结(二)

这里写目录标题 1、什么是解释性语言,什么是编译性语言?2、说说中作用域是怎么划分的3、type和isinstance方法的区别4、浅拷贝和深拷贝5、python中变量在内存中存储方式6、python中的封装、继承、多态7、python中内存管理机制是怎么样的?8、简…

旋转中心 机械手抓料方式

一、为什么要计算旋转中心? 机器视觉——旋转中心的标定_旋转标定-CSDN博客 在机械手抓料的时候传送带上过来的料可能是各个角度的,不同的位置,这样如果我们没有做好机械手标定的话很难抓取,因此我们要做旋转中和和机械手TCP标定…

章节2:单词本该这样记

为什么我们记不住单词? 单词不是被胡编乱造出来的,单词是有规律的,单词是符合人类的逻辑的。 单词实际意思结构意义历史文化 我们要怎么记单词? 掌握单词的结构规律了解与单词有关的历史文化灵活巧计,不要太拘泥于…

唯一约束

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 唯一约束 唯一约束的特点是在某一个列上的内容不允许出现重复。 例如,现在要收集用户的信息,假设包含编号(mid)、姓名&…

Word2vec 学习笔记

word2vec 学习笔记 0. 引言1. Word2vec 简介1-1. CBOW1-2. SG 2. 实战 0. 引言 最近研究向量检索,看到有同事使用 MeCab、Doc2Vec,所以把 Word2vec 这块知识学习一下。 1. Word2vec 简介 Word2vec 即 word to vector,顾名思义,…

封装哈希表

本文旨在讲解哈希表的封装,我们以哈希桶的结构来进行封装unorderedmap/set。要想实现封装哈希表,我们首先得先将哈希表的结构给搭建出来,然后再根据哈希桶的结构进一步封装unorderedmap/set! 下面我们先来实现哈希桶的结构&#x…

Internet Download Manager(IDM下载) v6.42.3 绿色版介绍

互联网下载管理器是一个广泛使用的软件,它可以帮助用户更好地管理和加速他们的下载。最新版本v6.42.3已经发布,它带来了一系列新功能和改进,让用户更加方便和快速地下载他们需要的文件。 新版本的互联网下载管理器增加了对最新浏览器的支持&…

1.Spring入门

1.1 Spring简介 Spring是一个轻量级Java 企业级应用程序开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。 Spring Fra…

Linux第80步_使用“信号量”实现“互斥访问”共享资源

1、创建MySemaphoreLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MySemaphoreLED回车”,创建“MySemaphoreLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件…

Github: Github actions 自动化工作原理与多workflow创建

Github actions 1 )概述 Github Actions 是Github官方推出的 CI/CD 解决方案 https://docs.githu.com/en/actions 优点 自动发布流程可减少发布过程中手动操作成本,大幅提升ci/cd效率,快速实现项目发布上线 缺点 存在较高的技术门槛需要利用…

Cloudways搭建WordPress外贸独立站完整教程

现在做个网站不比从前了,搭建网站非常的简单,主要是由于开源的CMS建站系统的崛起,就算不懂编程写代码的人也能搭建一个自己的网站,这些CMS系统提供了丰富的主题模板和插件,使用户可以通过简单的拖放和配置操作来建立自…

ZK vs FHE

1. 引言 近期ZAMA获得7300万美金的投资,使得FHE获得更多关注。FHE仍处于萌芽阶段,是未来隐私游戏规则的改变者。FHE需与ZK和MPC一起结合,以发挥最大效用。如: Threshold FHE:将FHE与MPC结合,实现信任最小…

第k个数——字典序

题目链接:1.第k个数 - 蓝桥云课 (lanqiao.cn) 样例解释: 输入13,得到的初始数组为1,2,3,4,5,6,7,8,9,10,11,12…