Java IO流--练习
生活随笔
收集整理的這篇文章主要介紹了
Java IO流--练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1)將若干個Student對象,若干個Teacher對象,寫出到d:/0404/a.txt中
2)將該文件中所有Student對象反序列化回來裝入List, 所有的Teacher對象反序列化回來轉入另外一個List
運用知識點:對象流,文件流
代碼:
邏輯—–>建立一個Person類,并實現Serializable。再讓Student和Teacher類繼承Person。(當然這里沒必要,可以直接建立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) {//在本工程下創建一個文件夾File file=new File("Instance");file.mkdirs();//在本工程下創建的文件夾下創建一個a.txt文件,用來寫入對象File file2=new File(file,"a.txt");//使用對象流寫入對象ObjectOutputStream oos=null;ObjectInputStream ois=null;try {file2.createNewFile();//將若干個Student對象,若干個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<>();//將文件中寫入的對象讀取出來,并轉為對象,存入對應的集合中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();}}}} }遍歷結果:
3)要求從控制臺輸入兩個整數,之后完成兩個整數的加法操作
如果輸入整數,求和。 如果輸入的不是整數:重新輸入,比如ddd注意:要求使用標準流,不能使用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("請輸入第一個數:");String a = reader.readLine();System.out.println("請輸入第二個數:");String b = reader.readLine();//對輸入的內容進行正則匹配,判斷是否是數字boolean flag = a.matches("[0-9]+");boolean flag2 = b.matches("\\d+");// 如果兩次輸入的都是數字,那么將兩次輸入的數據轉為整數,并求和,以及退出循環if( flag && flag2){sum = Integer.parseInt(a)+Integer.parseInt(b);break;}else{// 如果兩次輸入有一個不是數字,則重新輸入,進入循環System.out.println("請重新輸入,必須只能包含數字");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("輸入的兩個整數和是:"+sum);} }運行結果:
總結
以上是生活随笔為你收集整理的Java IO流--练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java IO流之内存流
- 下一篇: Java IO流--练习2