字符流用户注册案例、字符缓冲流、字符缓冲流特有功能、字符缓冲流操作文件中的数据排序案例
创始人
2024-02-02 03:12:23

文章目录

  • 字符流用户注册案例
  • 字符缓冲流
    • 字符缓冲流特有功能
  • 字符缓冲流操作文件中的数据排序案例
  • 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流小结

在这里插入图片描述

上一篇:如何评价党员

下一篇:描述难句

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...