JAVA开发 创建TXT文件,写入并读取数据流输出到控制台

news2024/11/16 9:53:33

通过BufferedReader类和BufferedWriter类操作txt文件

    • 1、BufferedReader类和BufferedWriter类
      • 1.1 BufferedReader类
        • 1.1.1 构造方法
        • 1.1.2 重要方法
        • 1.1.3 作用
      • 1.2 BufferedWriter类
        • 1.2.1 构造方法
        • 1.2.2 重要方法
        • 1.2.3 作用
      • 1.3 总结
    • 2、案例
      • 2.1 实现代码
      • 2.2 输出

1、BufferedReader类和BufferedWriter类

BufferedReader类和BufferedWriter类是Java中用于处理字符流的两个重要类,它们分别用于高效地从字符输入流中读取数据和将数据写入字符输出流。

1.1 BufferedReader类

BufferedReader是一个缓冲字符输入流,它继承自Reader类,提供了字符输入流的缓冲功能,使得读取文本文件更加简便和高效。

1.1.1 构造方法

BufferedReader(Reader in): 创建一个默认大小的输入缓冲区,并使用指定的Reader对象进行初始化。

1.1.2 重要方法
方法名返回值类型备注
read()int读取单个字符并返回其Unicode值。如果已到达流的末尾,则返回-1。
read(char[] cbuf, int off, int len)int读取字符到指定的字符数组中,并返回实际读取的字符数。off参数表示起始位置,len参数表示最大读取字符数。
readLine()String读取一行文本并返回一个字符串。如果已到达流的末尾,则返回null。
close()void关闭输入流并释放与之关联的所有系统资源。
1.1.3 作用

降低了输入流访问数据源的次数,通过一次性读取一定大小的数据到缓存区并进行字符编码,从而提高IO的效率。

1.2 BufferedWriter类

BufferedWriter是Java中用于字符输出的缓冲区类,它继承自Writer类,通过缓冲区来提高文件写入效率。

1.2.1 构造方法

通常使用带有Writer对象的构造方法来创建BufferedWriter对象。

1.2.2 重要方法
方法名返回值类型备注
write(char[] cbuf, int off, int len)void将字符数组的一部分写入缓冲区。
write(String str, int off, int len)void将字符串的一部分写入缓冲区。
write(int c)void写入单个字符。
newLine()void写入一个换行符。
flush()void将缓冲区中的数据输出到字符输出流中,并清空缓冲区。
close()void关闭输出流并释放与之关联的所有系统资源。
1.2.3 作用

通过减少直接写入输出流的次数,从而减少了IO操作的次数,提高了程序的运行效率。

1.3 总结

  1. BufferedReader和BufferedWriter都是Java中用于提高字符流处理效率的类。
  2. BufferedReader主要用于从字符输入流中读取数据,并提供缓冲功能以提高效率。
  3. BufferedWriter主要用于将数据写入字符输出流,同样通过缓冲功能来提高效率。
    两者都提供了缓冲机制,减少了直接对数据源或目标进行IO操作的次数,从而提高了程序的性能。

2、案例

2.1 实现代码

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class createTXT {

    //生成文件名
    public static String CreateFileName(String filePath){
        String fileName;
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        fileName = filePath + sdf.format(date) +" temp.txt";
        return fileName;
    }

    //新建txt文件并写入指定内容
    public static void CreateTxtAndWrite(String filename){
        String[] content = {"苍茫的天涯是我的爱","绵绵的青山脚下花正开","什么样的节奏是最呀最摇摆","什么样的歌声才是最开怀"};
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))){
            for (String s:content) {
                writer.write(s);
                writer.write('\n');
                writer.flush();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    //读取txt文件内容
    public static void TXTReader(String fileName){
        System.out.println("文件名:" + fileName );
        try(BufferedReader reader = new BufferedReader(new FileReader(fileName))){
            String contentLine;
            while((contentLine = reader.readLine())!= null){
                System.out.println(contentLine);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args){
        String filePath = "D:\\OA_Temp\\attachments\\txt_attachs\\";
        String fileName = CreateFileName(filePath);
        CreateTxtAndWrite(fileName);
        TXTReader(fileName);
    }
}

2.2 输出

在这里插入图片描述

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

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

相关文章

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、件标志组

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

产品经理简要介绍主流电商平台商品API接口的重要应用价值

主流电商平台: 截至目前(2024年6月),主流电商平台通常指的是国内外知名的在线购物平台,包括但不限于以下几家: 1. 中国电商平台: - 淘宝网(taobao.com) - 天猫商…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商,那么阿里云香港服务器究竟怎么样呢?和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢? 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而,它们各自的特点和…

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

深入 Go 语言核心:结构体的全方位解析

Go 语言,作为一种高效、静态类型的编程语言,自其问世以来便以其并发处理能力和简洁的语法结构广受开发者欢迎。虽然 Go 不是传统意义上的面向对象语言,它却以独特的方式支持面向对象编程的核心概念,其中结构体扮演了非常关键的角色…

解决Servlet报404未找到

一、检查project struture 打开Project Struture 检查jdk 检查Modules的depencies 如果缺少servlet的jar依赖,则可以先配置tomcat,然后执行如下图的添加依赖(这种方法不适用于maven构建的项目) 把Tomcat里的jar添加进来就可…

Sqlite3入门和c/c++下使用

1. SQLite3基本介绍 1.1 数据库的数据类型 1.2 基本语法 1. 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型); create table student(id int, name varchar(256), address text, QQ char(32)); 2. 插入数据 insert into 表名 valu…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号,在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说,我们需要将连续的声音信号转换为一个离散的序列,即数字化表示。…

【一竞技DOTA2】Malr1ne有可能是第二个奇迹哥

1、近日Falcons战队一号位选手skiter在直播中讲到战队组建过程,并称赞了队内中单Malr1ne很强,甚至可能是第二个Miracle-。 “去年我在Tundra的时候曾经与Nemiga的Malr1ne合作过,他替补Nine来打比赛。尽管我们在比赛中没拿到好成绩&#xff0c…

IPv6 ND 协议功能概述

ND 协议功能概述 ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。 作为 IPv6 的基础性协议,ND 协…

MNIST手写字符分类-卷积

MNIST手写字符分类-卷积 文章目录 MNIST手写字符分类-卷积1 模型构造2 训练3 推理4 导出5 onnx测试6 opencv部署7 总结 在上一篇中,我们介绍了如何在pytorch中使用线性层ReLU非线性层堆叠的网络进行手写字符识别的网络构建、训练、模型保存、导出和推理测试。本篇文…

数字人的技术实现原理

数字人是一种利用计算机图形学、人工智能等技术创建的虚拟人物。数字人可以模拟真人进行各种动作和表情,并与用户进行交互。数字人的技术实现原理主要包括以下几个方面。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. …

如何将 API 管理从 Postman 转移到 Apifox

上一篇推文讲到用 Swagger 管理的 API 怎么迁移到 Apifox,有许多同学反馈说能不能介绍一下 Postman 的迁移以及迁移过程中需要注意的事项。那么今天,它来了! 从 Postman 迁移到 Apifox 的方法有两种: 导出 Postman 集合 &#x…

诺派克ROPEX控制器维修RES-5008 RES-5006

德国希尔科诺派克ROPEX热封控制器维修型号包括:RES-401,RES-402,RES-403,RES-406,RES-407,RES-408,RES-409,RES-420,RES-440,RES-5008,RES-5006&a…

eNSP学习——PPP的认证

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置PPP的PAP认证 4、配置PPP的CHAP认证 主要命令 //设置本端的PPP协议对对端设备的认证方式为 PAP,认证采用的域名为huawei [R3]int s4/0/0 [R…

ToF原理记录

目录 1. ToF是什么?2. ToF深度测量原理2.1 脉冲调制法2.2 连续波调制法 1. ToF是什么? 飞行时间(Time-of-Flight,ToF)基本原理是通过连续发射光脉冲(一般为不可见光)到目标物体上,然…

BGP学习

BGP是一种矢量协议,使用TCP作为传输协议 ,目的端口号是179.是触发式更新,不是周期性更新 BGP的重点是策略路由的选路,能对路由进行路由汇总。运行BGP的路由器被称为BGP发言者,两个建立BGP会话的路由器互为对等体 IBGP和EBGP的区…

EasyExcel文件导出出现有文件但没有数据的问题

一开始由于JDK版本过高,我用的17,一直excel没有数据,表头也没有,后来摸索了好久,找了资料也没有,后来改了代码后报了一个错误(com.alibaba.excel.exception.ExcelGenerateException: java.lang.…

Redis高性能原理:Redis为什么这么快?

目录 前言: 一、Redis知识系统观 二、Redis为什么这么快? 三、Redis 唯快不破的原理总结 四、Redis6.x的多线程 前言: Redis 为了高性能,从各方各面都进行了优化。学习一门技术,通常只接触了零散的技术点&#xff…

pioneer电源维修PM33213BP-10P-1-6PH-H

开关电源出现不启振的时候,我们通常需要查看开关频率是否正确、保护电路是否断路、电压反馈电路、电流反馈电路又没问题,开关管是否击穿等。 电源维修实践中,有许多开关电源采用UC38系列8脚PWM组件,大多数电源不能工作都是因为电…