流、文件与正则表达式

荒凉一梦 提交于 2019-12-05 18:08:49

第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对比BufferedReaderScanner读文件的效率
  • 格式化输出: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

  • 尝试匹配网页中的数字字符串
  • 尝试匹配网页中的图片字符串

    我的代码

    任务一

    任务二

我的总结



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!