《面向对象技术实验报告》
姓 名:
学 号:
专业班级:
指导教师:
学 院:
实验题目: 学生成绩管理系统
一、设计目的
●掌握面向对象程序设计的基本思路和方法。
●利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、内容及要求
主要功能如下:
1.添加学生信息功能:添加一个学生的基本信息,包括学号、姓名,性别;
2.添加课程信息功能:添加一个课程的基本信息,包括课程号、课程名称;
3. 添加考试成绩功能:添加考试成绩:输入一个学生的学号,输入一个课程号,输入分数;
4.统计功能:输入姓名,能显示某学生各门科目的课程号和分数。
注: 自学《教材》前14章,利用所学到的Java编程知识和编程技巧,设计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。
三、核心代码
1、主类(程序的入口)
public class Main {
//程序入口,主函数
public static void main(String[] args) {
Main ma=new Main();//实例化
ma.zhiXing();//调用方法
}
/**
* 执行,判断的方法
*/
public void zhiXing(){
System.out.println("\欢迎来到徐兴豪学生成绩管理系统");//开始执行,致欢迎词
operating();
}
/**
* 选择操作和处理操作的方法
*/
private void operating(){
choseOperating();//选择操作
dealOperating();//处理操作
}
/**
* 选择操作,可以在每次完成操作之后又出现
*/
private void choseOperating(){
System.out.println("请选择你想要的操作(输入数字并按回车键):");//选择操作
System.out.println("0:退出 1:添加学生信息 2:添加课程信息 3:添加考试成绩 4:统计");
}
/**
* 处理操作,根据扫描的命令来执行相应的模块
*/
private void dealOperating(){
//生成一个扫描器,扫描用户输入的命令;System.in返回的是一个InputStream
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
switch (i) {
case 0:
System.out.println("你已经退出系统了!!");
System.exit(0);//退出系统
break;
case 1:
System.out.println("\欢迎进入<添加学生信息>");
addStudent();
break;
case 2:
System.out.println("\欢迎进入<添加课程信息>");
addCourse();
break;
case 3:
System.out.println("\欢迎进入<添加考试成绩>");
addGrade();
break;
case 4:
System.out.println("\欢迎进入<统计>");
tongji();
break;
default:
System.out.println("输入有误,请重新输入");
choseOperating();
dealOperating();//调用本身,监听再次输入的结果
break;
}
}
/**
* 添加学生的方法
* 扫描需要填入的信息
*/
private void addStudent() {
Scanner sc=new Scanner(System.in);
System.out.println("学号:");
int sno=sc.nextInt();//int型的值
System.out.println("姓名:");
String sname=sc.next();//string型的值
System.out.println("性别:");
String sex=sc.next();
int i=addOrNot(sc);
if(i==1){//如果添加
Student stu=new Student(String.valueOf(sno),sname,sex);//创建一个学生对象
String contentStr=stu.contentStr();//返回连接的字符串
boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_STUDENT, contentStr);//判断是否插入数据成功
if(isSucceed){//如果成功
System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作
System.out.println();//空一格
operating();
}else{//添加数据不成功,重新输入
System.out.println("添加失败,请重新加入");
addStudent();
}
}
}
/**
* 添加课程的方法
* 扫描需要填入的信息
*/
private void addCourse() {
Scanner sc=new Scanner(System.in);
System.out.println("课程编号:");
int cno=sc.nextInt();//int型的值
System.out.println("课程名称:");
String cname=sc.next();//string型的值
int i=addOrNot(sc);
if(1==i){//如果添加
Course cou=new Course(String.valueOf(cno),cname);//创建一个课程对象
String contentStr=cou.contentStr();//要插入的字符串
boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_COURSE, contentStr);//判断是否插入数据成功
if(isSucceed){//如果成功
System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作
System.out.println();//空一格
operating();
}else{//添加数据不成功,重新输入
System.out.println("添加失败,请重新加入");
addCourse();
}
}
}
/**
* 添加成绩的方法
* 扫描需要填入的信息
*/
private void addGrade() {
Scanner sc=new Scanner(System.in);
System.out.println("学生学号:");
int sno=sc.nextInt();//int型的值
System.out.println("课程编号:");
int cno=sc.nextInt();//int型的值
System.out.println("学科成绩:");
float grade=sc.nextFloat();//int型的值
int i=addOrNot(sc);
if(1==i){//如果添加
Grade gra=new Grade(String.valueOf(sno),String.valueOf(cno),String.valueOf(grade));//创建一个成绩对象
String contentStr=gra.contentStr();//要插入的字符串
boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_GRADE, contentStr);//判断是否插入数据成功
if(isSucceed){//如果成功
System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作
System.out.println();//空一格
operating();
}else{//添加数据不成功,重新输入
System.out.println("添加失败,请重新加入");
addGrade();
}
}
}
/**
* 统计方法
* 扫描需要填入的信息
* 输入学生姓名,显示各门科目的课程号cno和成绩grade
*/
private void tongji() {
System.out.println("请输入需要统计的学生的姓名:");
Scanner sc=new Scanner(System.in);
String sname=sc.next();
int result=isStuIn(sname);
if(0==result){
System.out.println("该姓名不存在,请返回主目录创建该学生!!!");
}else if(-1==result){
System.out.println("该姓名存在,但是没有相关的课程信息,请返回主目录创建成绩等信息!!!");
}else if(1==result){
System.out.println("恭喜恭喜,查找成功,请选择其他操作!!!");
}
operating();//选择操作
}
/**
* 判断是否列表中有这个学生的方法
* 除非存在该姓名,并且
* 返回值 0:不存在该姓名 1:正常可以输出
* -1,存在姓名,但是不存在相应的数据
*/
public int isStuIn(String sname){
//获得学生列表
ArrayList for(int i=0;i String sno=stuList.get(i).getSno();//得到该学生的序号 if(!isSnoInGra(sno)){//如果返回false说明有该学生姓名,没有相关的课程信息 return -1; }else return 1; } } return 0; } /** *判断该学号是否在成绩列表中(要查的学生在学生列表中) * @param sno * @return */ public boolean isSnoInGra(String sno){ //获得成绩列表 ArrayList ArrayList for(int i=0;i TongJi tj=new TongJi(graList.get(i).getCno(),graList.get(i).getGrade()); tonList.add(tj);//加入到列表 } } if(tonList.size()>0){//如果有数据,则遍历打印出来 //打印需要的信息 System.out.println("----结果----"); for(int i=0;i } System.out.println(); return true; }else //没有数据 return false; } /** * 是否添加学生,课程,成绩(3者可公用) * 1表示添加,0表示取消 */ private int addOrNot(Scanner sc){ System.out.println("输入1确认添加,输入0取消添加"); int i=sc.nextInt(); if(1==i){ System.out.println("确认添加"); }else if(0==i){//若取消添加则返回上机 System.out.println("取消添加"); operating(); }else{ System.out.println("输入有误,请重新输入"); addOrNot(sc); } return i; } } 2、数据类(定义实现了各功能) (1)添加课程 public class Course { private String cno;//课程号 private String cname;//课程名 //构造函数 public Course() { } public Course(String cno, String cname) { this.cno = cno; this.cname = cname; } /** * 用于将Course类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return cno++cname+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Course [cname=" + cname + ", cno=" + cno + "]"; } //get和set方法 public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } } (2)添加成绩 public class Grade { private String sno;//学生学号 private String cno;//课程编号 private String grade;//成绩 //构造函数 public Grade() { } public Grade(String sno, String cno, String grade) { this.sno = sno; this.cno = cno; this.grade = grade; } /** * 依据从文件中读取的一行字符串解剖成一个学生实体对象 * @param contentStr */ public Grade(String contentStr){ String[] field=contentStr.split(); this.setSno(field[0]); this.setCno(field[1]); this.setGrade(field[2]); } /** * 用于将Grade类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return sno++cno++grade+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Grade [cno=" + cno + ", grade=" + grade + ", sno=" + sno + "]"; } //get和set方法 public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } (3)添加学生信息 public class Student { private String sno;//学号 private String sname;//学生姓名 private String sex;//性别 //构造函数 public Student(){} public Student(String sno, String sname, String sex) { this.sno = sno; this.sname = sname; this.sex = sex; } /** * 依据从文件中读取的一行字符串解剖成一个学生实体对象 * @param contentStr */ public Student(String contentStr){ String[] field=contentStr.split(); this.setSno(field[0]); this.setSname(field[1]); this.setSex(field[2]); } /** * 用于将student类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return sno++sname++sex+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Student [sex=" + sex + ", sname=" + sname + ", sno=" + sno + "]"; } // set和get方法 public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } (4)统计查成绩 public class TongJi { private String cno;//课程编号 private String grade;//成绩 //重构函数 public TongJi(String cno, String grade) { this.cno = cno; this.grade = grade; } @Override public String toString() { return "TongJi [cno=" + cno + ", grade=" + grade + "]"; } //get和set方法 public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } 3、FileIO类(对信息输入到文件和从文件读取数据) (1)写文件 public class FileWrite { /** * 将内容写入文件的方法 * @param filePath:要写入的目标文件 * @param contentStr:要写入的内容 * @return:写入的成败 */ public static boolean wirteIn2File(String filePath,String contentStr){ File file=new File(filePath);//根据路劲实例化文件 OutputStream ous; try { ous = new FileOutputStream(file,true);//true表示能够在文件的尾部追加内容 DataOutputStream dos=new DataOutputStream(ous);//封装一下以便写入 byte[] data=contentStr.getBytes();//得到字符串的字节 dos.write(data, 0, data.length);//写入 } catch (Exception e) { e.printStackTrace(); return false;//若有什么异常则表示失败 } return true; } } (2)读文件 public class FileRead { /** * 获得学生信息列表的方法 * @return */ public static ArrayList ArrayList DataInputStream dis=readFromFile(FileConfig.FILE_STUDENT);//得到文件数据输入流对象 String txt; try { txt = dis.readLine();//一行一行的读 while(txt!=null){ Student stu=new Student(txt);//根据构造函数解剖成一个学生实体对象 stuList.add(stu);//加入到列表 txt = dis.readLine();//不为空就继续读取字符串 } } catch (IOException e) { e.printStackTrace(); } return stuList; } public static ArrayList ArrayList DataInputStream dis=readFromFile(FileConfig.FILE_GRADE); String txt; try { txt = dis.readLine(); while(txt!=null){ Grade stu=new Grade(txt); graList.add(stu); txt = dis.readLine(); } } catch (IOException e) { e.printStackTrace(); } return graList; } /** * 依据文件路劲获得封装后的数据输入流的方法 * @param filePath * @return */ public static DataInputStream readFromFile(String filePath){ DataInputStream dis; File file=new File(filePath); try { InputStream ins=new FileInputStream(file); dis=new DataInputStream(ins);//传入InputStream对象实例化,得到数据流 } catch (Exception e) { e.printStackTrace(); return null; } return dis; } } 四、运行结果 1、添加学生信息 2、添加课程信息 3、添加成绩信息 五、完整源代码 package xxh.main; import java.util.ArrayList; import java.util.Scanner; import xxh.FileIO.FileConfig; import xxh.FileIO.FileRead; import xxh.FileIO.FileWrite; import xxh.datas.Course; import xxh.datas.Grade; import xxh.datas.Student; import xxh.datas.TongJi; /** * 程序入口类 * */ public class Main { //程序入口,主函数 public static void main(String[] args) { Main ma=new Main();//实例化 ma.zhiXing();//调用方法 } /** * 执行,判断的方法 */ public void zhiXing(){ System.out.println("\欢迎来到徐兴豪学生成绩管理系统");//开始执行,致欢迎词 operating(); } /** * 选择操作和处理操作的方法 */ private void operating(){ choseOperating();//选择操作 dealOperating();//处理操作 } /** * 选择操作,可以在每次完成操作之后又出现 */ private void choseOperating(){ System.out.println("请选择你想要的操作(输入数字并按回车键):");//选择操作 System.out.println("0:退出 1:添加学生信息 2:添加课程信息 3:添加考试成绩 4:统计"); } /** * 处理操作,根据扫描的命令来执行相应的模块 */ private void dealOperating(){ //生成一个扫描器,扫描用户输入的命令;System.in返回的是一个InputStream Scanner sc=new Scanner(System.in); int i=sc.nextInt(); switch (i) { case 0: System.out.println("你已经退出系统了!!"); System.exit(0);//退出系统 break; case 1: System.out.println("\欢迎进入<添加学生信息>"); addStudent(); break; case 2: System.out.println("\欢迎进入<添加课程信息>"); addCourse(); break; case 3: System.out.println("\欢迎进入<添加考试成绩>"); addGrade(); break; case 4: System.out.println("\欢迎进入<统计>"); tongji(); break; default: System.out.println("输入有误,请重新输入"); choseOperating(); dealOperating();//调用本身,监听再次输入的结果 break; } } /** * 添加学生的方法 * 扫描需要填入的信息 */ private void addStudent() { Scanner sc=new Scanner(System.in); System.out.println("学号:"); int sno=sc.nextInt();//int型的值 System.out.println("姓名:"); String sname=sc.next();//string型的值 System.out.println("性别:"); String sex=sc.next(); int i=addOrNot(sc); if(i==1){//如果添加 Student stu=new Student(String.valueOf(sno),sname,sex);//创建一个学生对象 String contentStr=stu.contentStr();//返回连接的字符串 boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_STUDENT, contentStr);//判断是否插入数据成功 if(isSucceed){//如果成功 System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作 System.out.println();//空一格 operating(); }else{//添加数据不成功,重新输入 System.out.println("添加失败,请重新加入"); addStudent(); } } } /** * 添加课程的方法 * 扫描需要填入的信息 */ private void addCourse() { Scanner sc=new Scanner(System.in); System.out.println("课程编号:"); int cno=sc.nextInt();//int型的值 System.out.println("课程名称:"); String cname=sc.next();//string型的值 int i=addOrNot(sc); if(1==i){//如果添加 Course cou=new Course(String.valueOf(cno),cname);//创建一个课程对象 String contentStr=cou.contentStr();//要插入的字符串 boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_COURSE, contentStr);//判断是否插入数据成功 if(isSucceed){//如果成功 System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作 System.out.println();//空一格 operating(); }else{//添加数据不成功,重新输入 System.out.println("添加失败,请重新加入"); addCourse(); } } } /** * 添加成绩的方法 * 扫描需要填入的信息 */ private void addGrade() { Scanner sc=new Scanner(System.in); System.out.println("学生学号:"); int sno=sc.nextInt();//int型的值 System.out.println("课程编号:"); int cno=sc.nextInt();//int型的值 System.out.println("学科成绩:"); float grade=sc.nextFloat();//int型的值 int i=addOrNot(sc); if(1==i){//如果添加 Grade gra=new Grade(String.valueOf(sno),String.valueOf(cno),String.valueOf(grade));//创建一个成绩对象 String contentStr=gra.contentStr();//要插入的字符串 boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_GRADE, contentStr);//判断是否插入数据成功 if(isSucceed){//如果成功 System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作 System.out.println();//空一格 operating(); }else{//添加数据不成功,重新输入 System.out.println("添加失败,请重新加入"); addGrade(); } } } /** * 统计方法 * 扫描需要填入的信息 * 输入学生姓名,显示各门科目的课程号cno和成绩grade */ private void tongji() { System.out.println("请输入需要统计的学生的姓名:"); Scanner sc=new Scanner(System.in); String sname=sc.next(); int result=isStuIn(sname); if(0==result){ System.out.println("该姓名不存在,请返回主目录创建该学生!!!"); }else if(-1==result){ System.out.println("该姓名存在,但是没有相关的课程信息,请返回主目录创建成绩等信息!!!"); }else if(1==result){ System.out.println("恭喜恭喜,查找成功,请选择其他操作!!!"); } operating();//选择操作 } /** * 判断是否列表中有这个学生的方法 * 除非存在该姓名,并且 * 返回值 0:不存在该姓名 1:正常可以输出 * -1,存在姓名,但是不存在相应的数据 */ public int isStuIn(String sname){ //获得学生列表 ArrayList for(int i=0;i String sno=stuList.get(i).getSno();//得到该学生的序号 if(!isSnoInGra(sno)){//如果返回false说明有该学生姓名,没有相关的课程信息 return -1; }else return 1; } } return 0; } /** *判断该学号是否在成绩列表中(要查的学生在学生列表中) * @param sno * @return */ public boolean isSnoInGra(String sno){ //获得成绩列表 ArrayList ArrayList for(int i=0;i TongJi tj=new TongJi(graList.get(i).getCno(),graList.get(i).getGrade()); tonList.add(tj);//加入到列表 } } if(tonList.size()>0){//如果有数据,则遍历打印出来 //打印需要的信息 System.out.println("----结果----"); for(int i=0;i } System.out.println(); return true; }else //没有数据 return false; } /** * 是否添加学生,课程,成绩(3者可公用) * 1表示添加,0表示取消 */ private int addOrNot(Scanner sc){ System.out.println("输入1确认添加,输入0取消添加"); int i=sc.nextInt(); if(1==i){ System.out.println("确认添加"); }else if(0==i){//若取消添加则返回上机 System.out.println("取消添加"); operating(); }else{ System.out.println("输入有误,请重新输入"); addOrNot(sc); } return i; } } package xxh.datas; /** * 课程实体类 * */ public class Course { private String cno;//课程号 private String cname;//课程名 //构造函数 public Course() { } public Course(String cno, String cname) { this.cno = cno; this.cname = cname; } /** * 用于将Course类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return cno++cname+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Course [cname=" + cname + ", cno=" + cno + "]"; } //get和set方法 public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } } package xxh.datas; /** * 考试成绩实体类 * */ public class Grade { private String sno;//学生学号 private String cno;//课程编号 private String grade;//成绩 //构造函数 public Grade() { } public Grade(String sno, String cno, String grade) { this.sno = sno; this.cno = cno; this.grade = grade; } /** * 依据从文件中读取的一行字符串解剖成一个学生实体对象 * @param contentStr */ public Grade(String contentStr){ String[] field=contentStr.split(); this.setSno(field[0]); this.setCno(field[1]); this.setGrade(field[2]); } /** * 用于将Grade类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return sno++cno++grade+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Grade [cno=" + cno + ", grade=" + grade + ", sno=" + sno + "]"; } //get和set方法 public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } package xxh.datas; /** * 学生信息实体类 * */ public class Student { private String sno;//学号 private String sname;//学生姓名 private String sex;//性别 //构造函数 public Student(){} public Student(String sno, String sname, String sex) { this.sno = sno; this.sname = sname; this.sex = sex; } /** * 依据从文件中读取的一行字符串解剖成一个学生实体对象 * @param contentStr */ public Student(String contentStr){ String[] field=contentStr.split(); this.setSno(field[0]); this.setSname(field[1]); this.setSex(field[2]); } /** * 用于将student类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串 * 写成以下格式以便利用String的正则匹配分解得到实体 */ public String contentStr(){ return sno++sname++sex+"\\n"; } //覆盖toString方法,便于打印测试 public String toString() { return "Student [sex=" + sex + ", sname=" + sname + ", sno=" + sno + "]"; } // set和get方法 public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } package xxh.datas; /** * 统计类 * 其实可以用grade类,但是为了区分,还是单独用个类的好 * */ public class TongJi { private String cno;//课程编号 private String grade;//成绩 //重构函数 public TongJi(String cno, String grade) { this.cno = cno; this.grade = grade; } @Override public String toString() { return "TongJi [cno=" + cno + ", grade=" + grade + "]"; } //get和set方法 public String getCno() { return cno; } public void setCno(String cno) { this.cno = cno; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } package xxh.FileIO; /** * 文件路径的参数类 *若以后要更换文件路径,可在这里修改 */ public class FileConfig { //文件的路径 public final static String FILE_STUDENT="E:\\\\student.txt"; //学生 public final static String FILE_COURSE="E:\\\\course.txt"; //课程 public final static String FILE_GRADE="E:\\\\grade.txt"; //成绩 } package xxh.FileIO; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import xxh.datas.Grade; import xxh.datas.Student; /** * 读取文件类 * */ public class FileRead { /** * 获得学生信息列表的方法 * @return */ public static ArrayList ArrayList DataInputStream dis=readFromFile(FileConfig.FILE_STUDENT);//得到文件数据输入流对象 String txt; try { txt = dis.readLine();//一行一行的读 while(txt!=null){ Student stu=new Student(txt);//根据构造函数解剖成一个学生实体对象 stuList.add(stu);//加入到列表 txt = dis.readLine();//不为空就继续读取字符串 } } catch (IOException e) { e.printStackTrace(); } return stuList; } public static ArrayList ArrayList DataInputStream dis=readFromFile(FileConfig.FILE_GRADE); String txt; try { txt = dis.readLine(); while(txt!=null){ Grade stu=new Grade(txt); graList.add(stu); txt = dis.readLine(); } } catch (IOException e) { e.printStackTrace(); } return graList; } /** * 依据文件路劲获得封装后的数据输入流的方法 * @param filePath * @return */ public static DataInputStream readFromFile(String filePath){ DataInputStream dis; File file=new File(filePath); try { InputStream ins=new FileInputStream(file); dis=new DataInputStream(ins);//传入InputStream对象实例化,得到数据流 } catch (Exception e) { e.printStackTrace(); return null; } return dis; } } package xxh.FileIO; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; /** * 将内容写进文件的处理类 * */ public class FileWrite { /** * 将内容写入文件的方法 * @param filePath:要写入的目标文件 * @param contentStr:要写入的内容 * @return:写入的成败 */ public static boolean wirteIn2File(String filePath,String contentStr){ File file=new File(filePath);//根据路劲实例化文件 OutputStream ous; try { ous = new FileOutputStream(file,true);//true表示能够在文件的尾部追加内容 DataOutputStream dos=new DataOutputStream(ous);//封装一下以便写入 byte[] data=contentStr.getBytes();//得到字符串的字节 dos.write(data, 0, data.length);//写入 } catch (Exception e) { e.printStackTrace(); return false;//若有什么异常则表示失败 } return true; } }