字符流用户注册案例、字符缓冲流、字符缓冲流特有功能、字符缓冲流操作文件中的数据排序案例

news2025/1/14 10:12:51

文章目录

  • 字符流用户注册案例
  • 字符缓冲流
    • 字符缓冲流特有功能
  • 字符缓冲流操作文件中的数据排序案例
  • IO流小结

字符流用户注册案例

  • 案例需求:

     	将键盘录入的用户名和密码保存到本地实现永久化存储
    
  • 实现步骤

    • 获取用户输入的用户名和密码(这里使用 scanner 键盘录入)
    • 将用户输入的用户名和密码写入到本地文件中
    • 关流,释放资源
  • 代码实现:

package com.hcx;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请录入用户名:");
        String username = scanner.next();
        System.out.println("请录入密码:");
        String password = scanner.next();

        FileWriter fileWriter = new FileWriter("a.txt");
        fileWriter.write(username);
        fileWriter.write("\r\n");
        fileWriter.write(password);
        fileWriter.flush();
        fileWriter.close();

    }
}
  • 输入用户名和密码:
    在这里插入图片描述

  • 运行成功后当前模块下的 a.txt 文件的内容
    在这里插入图片描述

字符缓冲流

上次我们讲字节流的时候提到过字节缓冲流,它可以提高字节输入流和字节输出流读数据和写数据的效率,同样字符流也有提高效率的字符缓冲流

  • 字符缓冲流介绍

    • BufferedWriter:

         将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串
         的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值
         足够大,可用于大多数用途。
      
    • BufferedReader:

        从字符输入流读取文本,缓冲字符,以提供字符,数组,和行的高效
        读取,可以指定缓冲区大小,或者可以使用默认大小。默认值足够大
        可用于大多数用途。
      
  • 构造方法

方法名说明
BufferedWriter(Writer out)创建字符缓冲输出流对象
BufferedReader(Reader in)创建字符缓冲输入流对象
  • 代码演示
package com.hcx;

import java.io.*;

public class Demo5 {
    public static void main(String[] args) throws IOException {

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("bw.txt"));
        bufferedWriter.write("hello\r\n");
        bufferedWriter.write("world\r\n");
        bufferedWriter.close();

        BufferedReader bufferedReader = new BufferedReader(new FileReader("bw.txt"));

        //一次读取一个字符数据
//        int ch;
//        while ((ch = bufferedReader.read()) != -1) {
//            System.out.println((char) ch);
//        }


        // 一次读取一个字符数组数据
 
        char[] chars = new char[1024];
        int len;
        while ((len = bufferedReader.read(chars)) != -1) {
            System.out.println(new String(chars, 0, len));
        }
        bufferedReader.close();
    }
}

字符缓冲流特有功能

  • 方法介绍
    BufferedWriter:
方法名说明
void newLine()写一行行分隔符,行分隔符字符串由系统属性定义

BufferedReader:

方法名说明
String readLine()读一行文字,结果包含行的内容的字符串,不包括任何行终止字符如果流的末尾已经到达,则为 null
  • 代码演示
package com.hcx;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Demo6 {
    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("bw.txt"));
        bufferedWriter.write("abc");
        bufferedWriter.newLine();
        bufferedWriter.write("6666");
        bufferedWriter.close();
    }
}

  • 运行结果
    在这里插入图片描述
package com.hcx;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo7 {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new FileReader("bw.txt"));
        String line;
        while((line=bufferedReader.readLine())!= null){
            System.out.println(line);
        }
        bufferedReader.close();

    }
}

运行结果
在这里插入图片描述

字符缓冲流操作文件中的数据排序案例

  • 案例需求

     使用字符缓冲流读取文件中的数据,排序后再次写到本地文件
    
  • 实现步骤

    • 将文件中的数据读取到程序中
    • 对读取的数据进行处理
    • 将处理后的数据添加到集合中
    • 对集合中的数据进行排序
    • 将排序后的集合中的数据写入到文件中
  • 代码演示

package com.hcx;

import java.io.*;
import java.util.Arrays;

public class Demo8 {
    public static void main(String[] args) throws IOException {
        //需求:读取文件中的数据,排序后再将数据写到本地文件
        //分析:
        //1.要把文件中的数据读取出来
        BufferedReader bufferedReader = new BufferedReader(new FileReader("sort.txt"));
        //输出流一定不能写在这里,否则会清空文件内容
        String line = bufferedReader.readLine();
        System.out.println("读到的数据为:" + line);
        bufferedReader.close();
        //2.按照空格进行切割
        String[] split = line.split(" ");
        //3.把字符串数组类型变为 int 类型
        int[] arr = new int[split.length];
        //遍历 split 数组,可以进行类型转换
        for (int i = 0; i < arr.length; i++) {
            String smallStr = split[i];
            //类型转换
            int number = Integer.parseInt(smallStr);
            //把转换后的结果存到 arr 中
            arr[i] = number;
        }
        //4.排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        //5.把排序之后结果写回到本地 1 2 3 4...
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("sort.txt"));
        //写出
        for (int i = 0; i < arr.length; i++) {
            bufferedWriter.write(arr[i] + " ");
            bufferedWriter.flush();
        }
        //释放资源
        bufferedWriter.close();
    }
}
  • 没排序前 sort.txt 文件中的数据

在这里插入图片描述

  • 运行
    在这里插入图片描述

  • 排序后的 sort.txt 文件中的数据
    在这里插入图片描述

IO流小结

在这里插入图片描述

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

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

相关文章

NLP的数据增强技术总结

文章目录一、简单的数据增强技术 EDA (Easy Data Augmentation) 即Normal Augmentation Method1、同义词替换(Synonym Replacement, SR)&#xff1a;2、随机插入(Random Insertion, RI)&#xff1a;3、随机交换(Random Swap, RS)&#xff1a;4、随机删除(Random Deletion, RD)&…

JS中判断数据类型的几种方法

目录 1.typeof 2.constructor 3.instanceof 4.Object.prototype.toString.call 1.typeof &#x1f4d9; 语法 : typeof(需要判断的数据变量) &#x1f4d9; 特点: &#x1f340; 对于基本数据类型,除了null外都可以返回正确的结果;对于null,返回的是Object &#x1f34…

FL Studio21中文版本新增功能FL2023完整版

FL Studio水果简称FL&#xff0c;全称&#xff1a;Fruity Loops Studio&#xff0c;国人习惯叫它水果萝卜。FL软件现有版本是 FL Studio 21&#xff0c;已全面升级支持简体中文语言界面 。 FL Studio 21水果工具更新、新功能和插件FL Studio 21已经发布&#xff0c;并且有许多…

[附源码]java毕业设计日常饮食健康推荐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

迭代器C11

迭代器 迭代器失效 容器使用迭代器时&#xff0c;不要改变容器的大小 /在操作迭代器的过程中&#xff08;使用了迭代器这种循环体&#xff09;&#xff0c;千万不要改变vectori容器的容量&#xff0c;也就是不要增加或者删除vectori容器中的元素 /往容器中增加或者从容器中删…

python基于百度sdk语音转文字

python基于百度sdk语音转文字 1.安装baidu-aip 这样pip install aip&#xff1b; 2.要是不行的话下载"识别、合成 RESTful API Python SDK ",解压到某个文件夹下面如&#xff1a;d:\AI 百度智能云-管理中心https://console.bce.baidu.com/ai/#/ai/speech/overview/…

【面试题】深入理解Cookie、Session、Token的区别

【面试题】深入理解Cookie、Session、Token的区别 Cookie与Session Cookie Session Cookie与Session之前的联系 Cookie与Session的在请求中的工作流程 Cookie与Session存在问题 Token 什么是Token&#xff1f; 为什么要有token&#xff1f; token认证机制 Token流…

灵界的科学丨五、心灵与意识的科学奥祕

摘自李嗣涔教授《灵界的科学》 每个人都有「自我意识」&#xff0c; 每天睡觉时「我」就不见了&#xff0c; 每天早上醒来时&#xff0c;「我」又回来了&#xff0c; 好像没有太大的改变&#xff0c; 这个「我」的物理现象是什么&#xff1f; 探索科学的最后疆界──意识 …

【感恩系列】:说点事儿 以及 我把所有的粉丝放到了中国地图上啦~

文章目录&#x1f49e;许久不见&#xff0c;甚是想念&#x1f498;初次相遇&#x1f498;为什么写博客&#xff1f;&#x1f498;写博客的收获&#x1f498;此可已无言&#x1f498;中国版图里的我们&#x1f496;设计思路&#xff1a;&#x1f496;具体实现&#x1f495;爬取粉…

【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计(原理图工程、仿真工程、低重复率设计文档、答辩PPT、开题报告)

【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计&#xff08;原理图工程、仿真工程、低重复率设计文档、答辩PPT、开题报告&#xff09; 文章目录【毕业设计】56-辅助驾驶系统的视觉检测\超声波\图像识别\装置研究与设计&#xff08;原理图工程、仿真工…

HCIP实验2-1:IS-IS 配置实验

实验 2-1 IS-IS 配置实验 实验目标 掌握IS-IS协议基本配置掌握IS-IS协议DIS优先级修改方式掌握IS-IS协议网络类型修改方式掌握IS-IS协议外部路由引入掌握IS-IS接口cost修改方式掌握IS-IS路由渗透配置方式 拓扑图 场景 使用IS-IS协议作为某网络的IGP&#xff0c;R1和R5运行在…

操作系统:操作系统概论

目录前言1. 操作系统概观1.1 操作系统与计算机系统1.1.1 操作系统1.1.2 硬件软件1.1.2.1 硬件1.1.2.2 软件1.1.2.2.1 系统软件&#xff08;操作系统层&#xff09;1.1.2.2.2 支撑软件1.1.2.2.3 应用软件1.2 操作系统资源管理技术1.2.1 资源管理1.2.1.1 资源复用1.2.1.2 资源虚化…

线性代数---第五章特征值和特征向量

1特征值的和等于a11加上a22&#xff0c;特征值的积等于行列式 2利用|λE-A|0求特征值&#xff0c;代入特征值求基础解系&#xff0c;利用基础解系求特征向量 3如果两个特征值相等&#xff0c;那么它们的特征向量也相等 当特征值是二重根时&#xff0c;有可能有一个线性无关的特…

EndNote安装与使用

一、安装 1、双击ENX9Inst.msi安装 2、进入安装目录&#xff0c;使用CHS或ENG里的文件替换安装目录文件 CHS 中文版 ENG 英文版 二、软件优化 1、EndNote Import.enf 此文件用于导入中文文献时期刊名解析错误的问题&#xff0c;右击使用EndNoteX9打开后关闭即可 2、geebin…

Navicat导入SQL文件

安装Navicat 软件下载地址 https://wwz.lanzoub.com/i3T9S0gbq2wd 参考链接接 https://www.cnblogs.com/hhaostudy/p/15898030.html 准备导入SQL文件 新建连接 点击左上角连接 -> 选择MySQL 连接名&#xff1a;任意名称都可以&#xff0c;可输入localhost 主机&#x…

[计算机毕业设计]网络流量的在线恶意应用检测系统

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

【Pytorch with fastai】第 17 章 :基础神经网络

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

【LeetCode每日一题:799.香槟塔~~~模拟】

题目描述 我们把玻璃杯摆成金字塔的形状&#xff0c;其中 第一层 有 1 个玻璃杯&#xff0c; 第二层 有 2 个&#xff0c;依次类推到第 100 层&#xff0c;每个玻璃杯 (250ml) 将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟&#xff0c;当顶层的杯子满了&#xff0c;任…

〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径

✌ 大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术圈混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 ✌ &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &am…

ES6 入门教程 14 Set 和 Map 数据结构 14.1 Set

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程14 Set 和 Map 数据结构14.1 Set14.1.1 基本用法14.1.2 Set 实例的属性和方法14.1.3 遍历操作14 Set 和 Map 数据结构 14.1…