-
编写public static List readStudents(String fileName);从fileName指定的文本文件中读取所有学生,并将其放入到一个List中然后返回。
-
使用PrintWriter将Student对象写入文本文件,基础代码见后。**注意:**缓冲区问题。
-
使用ObjectInputStream/ObjectOutputStream读写学生对象。
其中1、2为1个考核点,3 为一个考核点
参考资料:
-
实验必需文件:基础代码目录中的Student.java(用来承载数据),Students.txt(UTF-8编码的包含中文的学生信息)
-
参考代码:
-
BufferedReaderTest.java(BufferedReader的使用)
-
InputStreamReaderTest.java(中文乱码)
-
TextFileTest.java(将文件中读取到的数据组装成对象)
-
注意:文件名如果不指定路径名,文件时写到Eclipse的
Workspace
内相关的目录中 -
小技巧1:Eclipse并排显示(最大化编辑窗口,往下拖动编辑窗口标题)
-
小技巧2:通过修改workspace的Text file encoding可以绕过读取中文UTF-8编码文件乱码的问题。
PrintWriter写文件基础代码:
List stuList = new ArrayList<>();
Student d1 = new Student(1,“x”,18,99.5);
Student d2 = new Student(2,“x”,19,100.0);
Student d3 = new Student(3,“x”,20,59.5);
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter(“d:/stuList.data”);
//你的代码,请查询jdk文档PrintWriter的用法
} catch (FileNotFoundException e) {
e.printStackTrace();
}
2. 缓冲流(结合使用JUint进行测试)
使用PrintWriter往文件里写入1千万行随机整数,范围在[0,10]。随机数种子设置为100.
然后从文件将每行读取出来转换成整数后相加。然后依次输出“个数 和 平均值(保留5位小数)”。
对比使用BufferedReader
与使用Scanner
从该文件中读取数据(只读取,不输出),使用哪种方法快?
-
使用junit对比
BufferedReader
与Scanner
读文件的效率 -
格式化输出:System.out.format。
-
要使用Scanner的hasNextXXX方法来判断是否到文件尾,否则会抛异常。
-
Scanner的asNextXXX方法应与相对应的nextXXX方法配合使用,否则容易出。
-
请删除
fail("Not yet implemented");
;并且在需要测试的方法上使用@Test
进行标注。
参考资料:
思考题:
为什么以下代码生成的文件大小是0,而只有当count=16384(两倍的默认缓冲区大小)才可以真正写入到文件?
String fileName = “d:/Test.data”;
int count = 16383;
PrintWriter pw = null;
try {
pw = new PrintWriter(fileName);
for (int i = 0; i < count; i++) {
pw.print(1);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
//pw.close();
}
第2次实验
=====
3. 字节流之对象流
结合使用ObjectOutputStream、ObjectInputStream与FileInputStream、FileOuputStream实现对Student对象的读写。
编写如下两个方法:
-
public static void writeStudent(List stuList)
-
public static List readStudents(String fileName)
进阶:
使用wxMEdit打开ObjectOutputStream所生成的文件格式,尝试修改文件,并通过代码读取文件进行验证。
4. 选做:RandomAccessFile
像操作数组一样操作文件内容。
将以上的对大量Student对象的读写使用RandomAceessFile。特别考核:你觉得使用RandomAccessFile读写文件与使用字节流、字符流、缓冲流相比较各有何优缺点。
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-NagjWVMU-1719273854134)]
[外链图片转存中…(img-Ftokp9m5-1719273854134)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-9WaMG7Up-1719273854135)]
[外链图片转存中…(img-kaS7wDCK-1719273854135)]