第1次实验
0. 字节流与二进制文件
使用DataOutputStream与FileOutputStream将Student对象写入二进制文件student.data
- 二进制文件与文本文件的区别
- try...catch...finally注意事项
使用try..with...resouces关闭资源
使用DataInputStream与FileInputStream从student.data中读取学生信息并组装成对象我的代码
我的总结
1. 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读)
任务:
使用BufferedReader从编码为UTF-8的文本文件中读出学生信息,并组装成对象然后输出。
- 中文乱码问题(FileReader使用系统默认编码方式读取文件,会产生乱码,可使用InputStreamReader解决)
- String的split方法使用\s+可以使用多个空格作为分隔符。
- 进阶:修改Students.txt文件,在正确的数据行中间增加一些错误行(如,每行只有3个数据,或者应该是数字的地方放入其他字符),修改自己的程序,让起可以处理出错的行(报错但可以继续运行)。
编写public static ListreadStudents(String fileName);从fileName指定的文本文件中读取所有学生,并将其放入到一个List中
使用PrintWriter将Student对象写入文本文件,基础代码见后。注意:缓冲区问题。
使用ObjectInputStream/ObjectOutputStream读写学生对象。
我的代码
任务一
任务二
任务三
任务四
我的总结
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进行标注。
我的代码
测试
我的总结
第2次实验
3. 字节流之对象流
结合使用ObjectOutputStream、ObjectInputStream与FileInputStream、FileOuputStream实现对Student对象的读写。
编写如下两个方法:
- public static void writeStudent(List stuList)
- public static List readStudents(String fileName)
我的代码
我的总结
5. 文件操作
编写一个程序,可以根据指定目录和文件名,搜索该目录及子目录下的所有文件,如果没有找到指定文件名,则显示无匹配,否则将所有找到的文件名与文件夹名显示出来。
编写public static void findFile(Path dir,String fileName)
方法.
以dir指定的路径为根目录,在其目录与子目录下查找所有和filename
相同的文件名,一旦找到就马上输出到控制台。
我的代码
我的总结
6. 正则表达式
如何判断一个给定的字符串是否是10进制数字格式?尝试编程进行验证。
修改HrefMatch.java
- 尝试匹配网页中的数字字符串
尝试匹配网页中的图片字符串
我的代码
任务一
任务二