图形用户界面和文件的实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.实验目的及实验环境
1)掌握File类及其API函数
2 ) 熟练掌握java文件读写操作
3)掌握字节流,字符流,对象流
二.实验内容
1.编写文件复制功能,用命令行方式提供源文件名和目标文件名
2.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生的总分,然后将学生信息和统计结果存入二进制数据文件STUDENT.DAT文件中;
3.编写一个程序,从上题中建立的STUDENT.DAT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;
4.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生总分,然后将学生信息和统计结果存入文本文件STUDENT.TXT 中;
5.编写一个程序,从上题中建立的STUDENT.TXT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;
三.方案设计
1. 输入源文件时须从所存在的目录下写,而输入目标文件时需要判断,如果不存在就创建,然后用while语句实现读写复制。创建一个类FileCopyTest,使用JUNIT4测试方法执行。
2. 创建一个学生类Student,实现Serializable接口,在DAT文件中,文件使用二进制的方式保存,为乱码,需要使用ObjectInputStream和ObjectOutputStream两个类完成读写;在TXT文件中,文件使用UTF-8编码,中文不会乱码,此时需要使用BufferedWriter和BufferedReader完整文件读写;四.测试数据及运行结果
1.正常测试数据(3组)及运行结果;
2.非正常测试数据(2组)及运行结果。
五.总结
1.实验过程中遇到的问题及解决办法;
保存及读取对象的数据时,应该在流中以对象为单位进行传输,这时就要用到对象流,先实现Serializable接口,创建InputStream流,及对象输入流或对象输出流
完的美的程序需要多次调整,比如说异常的处理需要处理Runtime异常和代码中抛出的异常;
2.对设计及调试过程的心得体会。
异常的处理需要多次调试,观察各种RuntimeException的出现方式,分别使用try--catch语句进行捕获并处理;简化IO操作,可以使用Jakarta的common.io包进行代码编写
通过这次试验更加懂得学习JA V A要经常动手练习,在练习中才能发现错误,像一些小知识点要记录下来经常复习
六.代码
1.public class FileCopyTest {
public void fileCopy() {
String originalFileName = "";
String destFileName = "";
File originalFile = null;
File destFile = null;
FileInputStream fis = null;
FileOutputStream fos = null;
Scanner scanner = new Scanner(System.in);
System.out.print("请输入源文件名(项目目录下):");
try {
originalFileName = scanner.next();
originalFile = new File(originalFileName);
if (!originalFile.exists()) {
System.out.println("目标文件不存在");
} else {
System.out.print("请输入目标文件名称:");
destFileName = scanner.next();
destFile = new File(destFileName);
if (destFile.exists()) {
System.out.println("目标文件存在,覆盖文件");
} else {
boolean flag = destFile.createNewFile();
if (flag == true) {
System.out.println("目标文件创建成功");
} else {
System.out.println("目标文件创建失败");
throw new IOException();
}
}
fis = new FileInputStream(originalFile);
fos = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = fis.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
System.out.println("文件复制成功");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("目标文件不存在");
} catch (IOException e) {
e.printStackTrace();
System.out.println("目标文件读取失败");
}finally{
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4.public class Student implements Serializable{
private static final long serialVersionUID = 3880353223704557926L;
private String id;
private String name;
private int chinese;
private int math;
private int english;
private int total;
public Student(String id, String name, int chinese, int math, int english) { super();