2015-04-12 41 views
-1

我想將不同種類的變量保存到文件中。目前我正在使用DataOutputStream這樣做。首先我保存一組短褲,然後保存另一個短褲陣列,然後我想保存一長串數組。問題是當我讀取文件時,我不知道我保存了多少短褲。我不知道第一個短陣列有多大。將不同種類的變量保存到文件中

我可以通過指定一個讓我知道短陣列停止的值來解決這個問題。例如我說數值-99999告訴我陣列何時結束。但在結束之前,短陣列包含值-99999的可能性很小。

是否有創建標記的方法?或者我應該爲每個數組創建不同的文件?

+2

那麼,如果它只是你需要劃分的數字,我會爭辯說,一個很好的分隔符賭注將是一封信。 – christopher

+0

@Alex是的,這解決了我的問題,哈哈。謝謝,抱歉的愚蠢問題:),發表您的評論作爲答案,然後我可以關閉這個,或者我應該刪除問題? – Alexanus

+1

爲什麼不把它保存在一個容易解析的標準格式如JSON或XML中,而不是發明自己的格式? –

回答

0

閱讀陣列的長度,然後再讀取許多元素

2

你應該首先寫出數組長度,然後是數組,這樣你就知道要讀取多少項。

-2

可以使用此

寫作:

short[] shorts1 = ...; //an array 
short[] shorts2 = ...; //another array 
long[] longs = ...; //another array 
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("the filename"))) { 
    out.writeObject(shorts1); 
    out.writeObject(shorts2); 
    out.writeObject(longs); 
    out.flush(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

此代碼首先寫入兩個單獨的短數組到一個文件,之後一個長陣。


讀:

short[] shorts1; 
short[] shorts2; 
long[] longs; 
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("the filename"))) { 
    shorts1 = (short[])in.readObject(); 
    shorts2 = (short[])in.readObject(); 
    longs = (long[])in.readObject(); 
} catch (IOException | ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

此代碼讀取兩個單獨的短陣列和從該文件的長陣列它們正在寫入。

+0

@jenzz是的,使用ObjectOutputStream.writeObject(someArray) – SWdV

+0

那麼,爲什麼投票呢? – SWdV

+0

請解釋爲什麼這解決了OP的問題,這與閱讀而不是寫作對象有關。 –