java中遍歷物件流寫入的檔案
在用物件序列化寫入檔案後,特別是多物件的情況。比如說一個學生管理系統,有多個person,要想把所有的學生都資料都儲存在一個檔案中,可以有兩種方法:
一、把所有學生的資料都儲存在一個容器中,然後將這個容器一個物件寫入檔案,再用物件的反序列化從檔案中讀取出來就行了。(這裡就不多說了)
二、把每個學生的資料(每個物件)一次存進檔案中,這時檔案就有多個物件存在了,要想把這些物件一個一個的讀取出來,就需要用到這個檔案。
比如說學生的資料為一個類:
public class stu{ private String name; private String sex; private int age; public stu(String name, String sex, int age){ this.name = name; this.sex = sex; this.age = age; } //get、set方法省略 }
我們寫入時就是這樣寫入:
ObjectOutputStream obs = null; try{ obs = new ObjectOutputStream(new FileOutputStream("d://student.tmp")); stu student= null; student= new stu("2013081237", "張三", 25); obs.writeObject(student); obs.flush(); student= new stu("2013081238", "李四", 26); obs.writeObject(student); obs.flush(); student= new stu("2013081239", "王五", 27); obs.writeObject(student); obs.flush(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ obs.close(); }catch(Exception e){ e.printStackTrace(); } }
讀取時用readObject()方法到檔案末尾時不會反回-1之類的標識,這時遍歷方法可以用EOFException來解決檔案結束的問題。程式碼如下:
try{ while(true){ obj = ois.readObject(); student= (stu)obj; System.out.println("姓名為:" + student.getName()); System.out.println("性別為:" + student.getSex()); System.out.println("年齡為:" + student.getAge()); } }catch(EOFException e){ e.printStackTrace(); System.out.println("結束"); }
通過丟擲的EOFException異常來判定檔案是否到末尾了。這樣就能實現對物件檔案的遍歷。
相關推薦
java中遍歷物件流寫入的檔案
在用物件序列化寫入檔案後,特別是多物件的情況。比如說一個學生管理系統,有多個person,要想把所有的學生都資料都儲存在一個檔案中,可以有兩種方法: 一、把所有學生的資料都儲存在一個容器中,然後將這個容器一個物件寫入檔案,再用物件的反序列化從檔案中讀取出來就行了。(這裡就不
java中遍歷一個物件的所有屬性
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
# Java中遍歷Object的屬性和屬性值,並以String形式返回||toString()一個物件Object||將一個物件轉化為字串String
Java中遍歷Object的屬性和屬性值,並以String形式返回||toString()一個物件Object||將一個物件轉化為字串String 1.關注每個屬性組 //用List<Map<String, String>>
java中遍歷類中的屬性
遍歷 value ttr row cati mode cep 數組 att public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException,
java 中遍歷Map的幾種方法
叠代器 ofo popu arr highlight shm int print number 方法分為兩類: 一類是基於map的Entry;map.entrySet(); 一類是基於map的key;map.keySet() 而每一類都有兩種遍歷方式: a.利用叠代器 it
Java中遍歷實體類(處理MongoDB)
boot common ech set declare code mod exc reflect 在實際過程中,經常要將實體類進行封裝,尤其是處理數據庫的過程中;因此,對於遍歷實體類能夠與數據庫中的一行數據對應起來。 我是使用的環境是Spring boot,訪問的數據庫時M
Java中遍歷Set集合的方法
對 set 的遍歷 1.迭代遍歷: Set<String> set = new HashSet<String>(); Iterator<String> it = set.iterator(); while (it.hasNext()) {
Java中遍歷HashMap的5種方式
分類: JAVA 本教程將為你展示Java中HashMap的幾種典型遍歷方式。 如果你使用Java8,由於該版本JDK支援lambda表示式,可以採用第5種方式來遍歷。 如果你想使用泛型,可以參考方法3。如果你使用舊版JDK不支援泛型可以參考方法4。 1、 通過ForEac
Json中遍歷物件或者集合,簡單的實現
後臺 從資料庫獲取的物件,或者集合,一一儲存在map中 function infoView(id,state){ $.ajax({ type: 'POS
淺談java中遍歷Map的幾種方法
java中的map遍歷有多種方法,從最早的Iterator,到java5支援的foreach,再到java8 Lambda,讓我們一起來看下具體的用法以及各自的優缺點 先初始化一個map public class TestMap { public static Map<Intege
vue 中遍歷物件顯示的順序不對
一、情況說明:在wacth裡面生成了一個日期字串的的陣列(如下圖1),如果遍歷這個陣列生成一個以日期為key的Object,但是數組裡面的元素順序和Object的屬性的順序是不一樣的,並且在vue模板中遍歷這個Object並顯示key,得到的是陣列的元素順序(如下圖2)! 圖1 圖2
談談java中遍歷Map的幾種方法
java中的map遍歷有多種方法,從最早的Iterator,到java5支援的foreach,再到java8 Lambda。 讓我們一起來看下具體的用法以及各自的優缺點 先初始化一個map public class TestMap { public static
微信小程式中遍歷---物件
最近在折騰微信小程式,遇到這麼一個情況:後端返回一個key-value的物件資料,需要遍歷物件的key-value,然後渲染到檢視中。就像下面這樣: { '2018-1-9':{ address: '....', name: '....' }, '2018-1
Java中遍歷Map的幾種方法總結
方法一 在for-each迴圈中使用entries來遍歷 這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。 Map<Integer, Integer> map = new HashMap<Integer, Integer>
js中遍歷物件的屬性和值
function allPrpos ( obj ) { // 用來儲存所有的屬性名稱和值 var props = "" ; // 開始遍歷 for ( var p in obj ){ // 方法 if ( typeof ( obj [ p ]) == "
java中遍歷實體類屬性和型別,屬性值
[java] view plain copy print? publicstaticvoid testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentExcept
java中 遍歷 Map集合的四種方法.
先附上參考文章 關於java中遍歷map具體哪四種方式,請看下文詳解吧。 方式一 這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。 Map<Integer, Integer> map =new HashMap<Int
javascript中遍歷物件的List集合
<script><c:forEach var="obj" items="${mulst} "> alert("${obj.屬性}"); </c:forEach>
Java中遍歷Map的兩種方法:keySet和entrySet
//方法一 Set<String> set = map.keySet(); for (String s:set) { System.out.println(s+","+ma
java中遍歷屬性欄位及值
轉自: http://bbs.csdn.net/topics/320176897 示例程式碼如下: package test; import java.lang.reflect.Field; interface IEntity{ } class Entity