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

文章目录

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

在这里插入图片描述在 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#理解进程、线程和任务

一、进程、线程和任务 C# 中的进程、线程和任务时,通常涉及到多任务处理、并行编程和异步操作。下面我将详细解释这三个概念: 1.进程 定义:进程是正在运行的程序的实例。每个进程都有自己的内存空间、系统资源和执行状态。C#中的表示&…

【软考】SMTP与SNMP

目录 1. SMTP2. SNMP 1. SMTP 1.简单邮件传输协议(Simple Mail Transfer Protocol)2.SMTP主要负责底层的邮件系统如何将邮件从一台机器发送至另外一台机器3.该协议工作在TCP协议的25号端口4.小记:Transfer与Transmission都有T 2. SNMP 1.简…

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

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

尚硅谷vue全家桶(上)

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

cookies为什么会有csrf风险,为什么token可以避免

CSRF 利用的是网站对用户网页浏览器的信任。 伪造请求(一般是一个非法链接): 链接伪造了目的性请求参数,因为地址需要同源,所以不会改。 Cookie 是通过浏览器将服务器返回的数据保存在本地的一小块数据(一般小于4kb)。当浏览器发…

各位朋友我回答一个问题大家帮忙看看是否对错!

转载:《发布一个简单的C语言的问题,有大牛可以前往指导一下》 简单的C字符串问题:编写如下面要求一个函数,那个最好呢?求各位出出点子看看如何优化。_编程语言-CSDN问答 当我认为问题最优时候我将进行开帖总结与致谢&#xff0c…

SpringBoot 中使用自定义参数解析器修改请求对象

SpringBoot 中使用自定义参数解析器修改请求对象 在 SpringBoot 应用中,有时我们需要在控制器方法执行之前对请求对象进行修改。自定义参数解析器提供了一种灵活的方式来实现这一需求。 1. 创建自定义参数解析器 首先,我们需要创建一个自定义参数解析…

[NCNN学习笔记]-1

1、前言 本次继续学习NCNN,希望能够坚持,往期学习NCNN的链接如下。 [NCNN学习笔记]-0 2、学习内容 2.1、batchnorm_arm.cpp 这个章节学习NCNN中batchnorm在NEON上的实现。batchnorm的学习可参考链接:https://zhuanlan.zhihu.com/p/93643523 在NCNN…

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

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

C#开发五子棋游戏:从新手到高手的编程之旅

C#开发五子棋游戏:从新手到高手的编程之旅 目录 一、引言 二、项目规划与设计思路 三、棋盘与棋子的数据模型构建 四、交互式用户界面设计 五、核心游戏逻辑实现 一、引言 五子棋,作为一种古老的策略型棋类游戏,在全球拥有广泛的爱好者…

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)、姓名&…

【通信原理笔记】【二】随机信号分析——2.3 平稳随机过程的性质

文章目录 前言一、平稳过程的不变性二、平稳过程通过线性时不变系统2.1 输出随机过程的特性2.2 输入输出随机过程的关系 三、平稳过程经过希尔伯特系统总结 前言 在上一篇中我们学习了平稳随机过程这一特殊的随机过程,这篇我们进一步学习平稳过程具有哪些性质。 一…

Word2vec 学习笔记

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