java文件读写工具_「教程」手把手教你用Java读写文件,不容错过哦!

3079eb6a442d518646a0de5a9120331d.png

平时我们在电脑上创建文件,word文档。对他们进行各种各样的处理。

今天为大家演示一下如何使用Java代码实现对文件的读写操作

老规矩,IDE仍然使用eclipse。下面我为大家分步骤进行介绍

问题

读取文件中的学生成绩表,并将他们按照成绩的高低进行排序,最后把结果输出到另外一个文件中

步骤一

创建一个Student类(也就是学生类)这个类是专门用来存储学生的信息的,比如学生的姓名、学号、成绩等,同时设置好访问这个学生属性的方法,因为学生的属性都是私有化的。在eclipse中可以使用快捷方式自动生成。

6d50650c39e531dbbad745c44eae9c9e.png

就像这样

步骤二

创建一个文本文本,里面写入我们要读取的学生信息,包括学生姓名、学号、成绩。如下图

68e98e698d63ba75103b65bb7a513bce.png

就像这样,姓名、学号、成绩,中间用空格分开

步骤三

编写测试类,这里有几个处理函数,我为大家解释一下

方法一:封装学生对象

public List setlist(String path) throws Exception:名字为setlist 参数为文件路径,意思就是只要你传一个文件路径给我,我就能帮你把他的数据读出来,然后封装成一个个的学生对象,再返回给你。具体操作如下图。

837a85b950cf06fff062761e88c24be3.png

方法二:输出文本文件

public void write(String newpath, List list) throws IOException :方法名为write,参数为学生类型的集合。意思也很简单,只要你把排好顺序的集合给我,我就能把他输出到一个新的文本文件中。你看是不是很简单?

28407d8e6235e05bf39043311561ed35.png

方法三:冒泡排序算法

public List array(List list) 方法名为array,参数为学生类型的集合,意思就是只要你给我一个学生类型的集合,我就能把他们的成绩从高到底的排序,并把排序好的结果返回给你。具体算法如下(这是非常著名的冒泡排序算法哦,当然也很简单啦,相信你一定可以看的懂)

d282384b060fd43425b40326ab4980fc.png

最后程序的入口

方法四:主函数

在主函数里面,你只需创建一个对象,调用上述的方法,把文件路径传给他们,剩下的他们就会自动帮你完成啦!你看,是不是很简单呢?以下是主函数的内容。

5c3dd3841685e6bc265b80d266352733.png

运行结果

0a1476cf705e8785a61134c4bee0ef95.png

看,是不是已经为你排好顺序了呢?很简单哒,快跟我一起学习来!

最后,贴出全部代码。

学生类public class Student {//创建一个学生对,设置相应属性,并设置获取他字段的方法private String name;private Integer id;private Integer grade;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getGrade() {return grade;}public void setGrade(Integer grade) {this.grade = grade;}@Overridepublic String toString() {//tostring一下方面打印学生的完整信息return "Student [name=" + name + ", id=" + id + ", grade=" + grade + "]";}}

测试类import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Four_5 {public static void main(String[] args) throws Exception {Four_5 fi = new Four_5();//创建一个对象List list = fi.setlist("hello.txt");//调用函数,引入文件List arraylist = fi.array(list);//把这个集合传进来并进行排序for (Student stu : arraylist) {//遍历这个数组System.out.println(stu.getId() + "\t" + stu.getName() + stu.getGrade());}fi.write("student.txt", arraylist);//调用方法,把数据写入新文件中}// 读取文件中的数据,并把每一个学生封装成学生对象public List setlist(String path) throws Exception {List list = new ArrayList<>();//创建一个集合对象,类型为学生类型。用来存放学生对象Scanner sc = new Scanner(new File(path));//创建一个文本输入对象while (sc.hasNext()) {//判断是否有下一行Student stu = new Student();//创建一个学生对象String nl = sc.nextLine();//读出这一行的内容,并赋值给字符串变量nlString[] sp = nl.split(" ");//以空格为标准对字符串进行分割stu.setId(Integer.parseInt(sp[1]));//使用学生对象调用方法设置他的ID属性,Integer.parseInt()这个方法可以把字符型转变为整数型变量stu.setName(sp[0]);//使用学生对象调用方法设置他的名字属性stu.setGrade(Integer.parseInt(sp[2]));//使用学生对象调用方法设置他的成绩属性list.add(stu);//将这个设置好属性内容的学生对象装入list集合System.out.println(stu);//打印一次才装入的这个学生信息是否正确}sc.close();//关闭资源return list;//返回这个集合}// 写到新文件中public void write(String newpath, List list) throws IOException {FileWriter fw = new FileWriter(newpath);//创建一个写文件对象,参数为文件路径/文件名BufferedWriter bw = new BufferedWriter(fw);//创建一个写入流对象for (int i = 0; i < list.size(); i++) {//循环判断,是否小于这个集合的大小bw.write(list.get(i).getId() + "\t" + list.get(i).getName() + "\t" + list.get(i).getGrade());//写入学生对象的属性,并进行拼接bw.newLine();//换新的一行}bw.flush();fw.close();//关闭资源}// 排序public List array(List list) {for (int i = 0; i < list.size() - 1; i++) {for (int j = 0; j < list.size() - 1; j++) {if (list.get(j).getGrade() < list.get(j + 1).getGrade()) {Student s = list.get(j);//获得下标为j的学生对象list.set(j, list.get(j + 1));//把下标为j+1的学生对象移到下标为j的位置list.set(j + 1, s);//同上 set方法的功能是替换列表中指定位置的元素}}}return list;//返回这个集合}}

本文仅代表作者个人观点,不代表SEO研究协会网官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱cxb5918@163.com。更多相关资讯,请到SEO研究协会网www.seoxiehui.cn学习互联网营销技术请到巨推学院www.jutuiedu.com。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值