Java IO流--练习
生活随笔
收集整理的這篇文章主要介紹了
Java IO流--练习
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1)將若干個(gè)Student對象,若干個(gè)Teacher對象,寫出到d:/0404/a.txt中
2)將該文件中所有Student對象反序列化回來裝入List, 所有的Teacher對象反序列化回來轉(zhuǎn)入另外一個(gè)List
運(yùn)用知識(shí)點(diǎn):對象流,文件流
代碼:
邏輯—–>建立一個(gè)Person類,并實(shí)現(xiàn)Serializable。再讓Student和Teacher類繼承Person。(當(dāng)然這里沒必要,可以直接建立Student和Teacher類)
Person類
package Homework;import java.io.Serializable;public class Person implements Serializable {private static final long serialVersionUID = 1L;private String name;private String sex;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";}public Person(String name, String sex, int age) {super();this.name = name;this.sex = sex;this.age = age;}public Person() {super();}}Student類
package Homework;public class Student extends Person {public Student(String name,String sex,int age){super(name, sex, age);}public Student(){}@Overridepublic String toString() {return "Student [getName()=" + getName() + ", getSex()=" + getSex() + ", getAge()=" + getAge() + "]";} }Teacher類
package Homework;public class Teacher extends Person {public Teacher(String name,String sex,int age){super(name, sex, age);}public Teacher(){}@Overridepublic String toString() {return "Teacher [getName()=" + getName() + ", getSex()=" + getSex() + ", getAge()=" + getAge() + "]";} }測試類
package Homework;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList;public class Test1and2 {public static void main(String[] args) {//在本工程下創(chuàng)建一個(gè)文件夾File file=new File("Instance");file.mkdirs();//在本工程下創(chuàng)建的文件夾下創(chuàng)建一個(gè)a.txt文件,用來寫入對象File file2=new File(file,"a.txt");//使用對象流寫入對象ObjectOutputStream oos=null;ObjectInputStream ois=null;try {file2.createNewFile();//將若干個(gè)Student對象,若干個(gè)Teacher對象,寫入文件中oos=new ObjectOutputStream(new FileOutputStream(file2));oos.writeObject(new Student("李四","男",20));oos.writeObject(new Student("李四2","男",45));oos.writeObject(new Student("李四3","男",38));oos.writeObject(new Teacher("張三","男",13));oos.writeObject(new Teacher("張三","男",50));oos.writeObject(new Teacher("張三","男",34));oos.flush();//將該文件中所有Student對象反序列化回來裝入Listois=new ObjectInputStream(new FileInputStream(file2));ArrayList<Student> list=new ArrayList<>();ArrayList<Teacher> list2=new ArrayList<>();//將文件中寫入的對象讀取出來,并轉(zhuǎn)為對象,存入對應(yīng)的集合中for(int i=0;i<6;i++){if(i<=2){Student student=(Student)ois.readObject();list.add(student);}else {Teacher teacher=(Teacher)ois.readObject();list2.add(teacher);}}//遍歷打印出集合中的對象for (Student student : list) {System.out.println(student);}for (Teacher teacher : list2) {System.out.println(teacher);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(ois!=null){try {ois.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(oos!=null){try {oos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} }遍歷結(jié)果:
3)要求從控制臺(tái)輸入兩個(gè)整數(shù),之后完成兩個(gè)整數(shù)的加法操作
如果輸入整數(shù),求和。 如果輸入的不是整數(shù):重新輸入,比如ddd注意:要求使用標(biāo)準(zhǔn)流,不能使用Scanner類
代碼:
package com.qf.demo2;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Test {public static void main(String[] args) {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int sum = 0;while(true){try {System.out.println("請輸入第一個(gè)數(shù):");String a = reader.readLine();System.out.println("請輸入第二個(gè)數(shù):");String b = reader.readLine();//對輸入的內(nèi)容進(jìn)行正則匹配,判斷是否是數(shù)字boolean flag = a.matches("[0-9]+");boolean flag2 = b.matches("\\d+");// 如果兩次輸入的都是數(shù)字,那么將兩次輸入的數(shù)據(jù)轉(zhuǎn)為整數(shù),并求和,以及退出循環(huán)if( flag && flag2){sum = Integer.parseInt(a)+Integer.parseInt(b);break;}else{// 如果兩次輸入有一個(gè)不是數(shù)字,則重新輸入,進(jìn)入循環(huán)System.out.println("請重新輸入,必須只能包含數(shù)字");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("輸入的兩個(gè)整數(shù)和是:"+sum);} }運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的Java IO流--练习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java IO流之内存流
- 下一篇: Java IO流--练习2