关于JAVA的文件读入(按行读入)

关于JAVA的文件读入(按行读入)

作者:wwhhyy

前情提要

上次发了一篇做国外某学校数据结构考试试题的文章,发现文章的阅读量非常的低。竟然只有两个阅读量,而且最让人伤心的是这两个阅读量还都是我自己。所以我这次还是老老实实发点正常的文章吧。今天我们的主题是java文件的读入,今天我主要演示的是java中怎么去一行一行的进行文件的读入,主要是使用了BufferedReader这个类进行文件的读入,它提供的readline方法能够帮助我们进行按行读入的操作。

这个类的介绍
BufferedReader br=new BufferedReader(new FileReader(new File("Studata.txt")));

基本上这个就是我们使用这个类的一个比较普遍的情形,java的流处理基本上都是这种层层的嵌套式的初始化。其实这也是一个设计模式的体现,但是我有点不记得是啥了。然后我们具体来看这个流,我们其实就是打开了一个输入流,然后我们打开的文件是当前目录下的Studata.txt,然后我们使用这个流进行读入。我们看一下读入的基本的语句。

String line=null; //读入的每行
while((line=br.readLine())!=null){
     //如果不是什么都没有就进行处理
    String[] elements=line.split(" ");  //使用split函数对于读到的文本进行处理
    Student student=new Student(elements[0],elements[1],elements[2],elements[3],elements[4],null,0,0);//构造学生,添加学生信息
    students.add(student);//添加学生信息
}
br.close();//关闭读入流

这个函数其实你把while中间的部分拿掉才是模板,但是我还是放在那了,毕竟我们后面还要使用我们的这一块函数。可以看到我们的读入就是看我们能否读到String字符串,如果读到就继续读入,然后处理我们读入的函数,如果不行那么久直接中断我们的读入过程,并且在这样的一个过程中,我们要注意流的关闭。

一个小例子

在这里插入图片描述

这个是我们的一个Java实验的题目,我们就来看一下怎么去写这么一个Java程序,下面我们首先来看一下我们的几个准备的文件:Studata.txt、Recorddata.txt、StuCard.txt

Studata.txt
20188374858604 宋和科 2018 电器工程 13327924254
20188369853124 吴航宇 2018 软件工程 13913604811
20188147012541 宋璋逸 2018 西语 13573404781
20187412541701 李华洋 2018 数学师范 13914758472
20181452687424 王霸 2018 法学 18841258741
20191047521499 李逍遥 2019 新能源 13914872145
Recorddata.txt
0000000001 2 30.72 A
0000000001 1 130 B
0000000001 2 13.38 C
0000000002 1 100 D
0000000002 2 11 A
0000000002 2 12.9 B
0000000003 2 17.6 D
0000000003 1 66 A
0000000003 1 30 B
0000000003 1 80 A
0000000003 2 14.3 A
0000000004 1 23 A
0000000004 2 9.99 B
0000000004 1 56 C
0000000005 1 56 C
0000000005 2 6.6 B
0000000005 2 3.2 A
0000000006 1 300 B
0000000006 2 31.2 A
0000000006 2 12.6 C
0000000006 2 1.24 D
StuCard.txt
20188374858604 0000000001
20188369853124 0000000002
20188147012541 0000000003
20187412541701 0000000004
20181452687424 0000000005
20191047521499 0000000006

然后我们看一看我们写的几个类,我的注释还是比较全的,基本上应该可以看懂

Record
public class Record {
   
    String cardId;  //卡的号码
    String kind;   //消费的种类,主要就是1是存钱 2是花钱
    double money;  //行为的钱的数量
    String location;  //消费的地点,也就是ABCD之一
    public Record(String cardId,String kind,Double money,String location){
    //一个简单的构造方法
        this.cardId=cardId;
        this.kind=kind;
        this.money=</
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值