-1
我有一個大陣,我需要保存到磁盤下一個用戶會話大整數的數組。我沒有數據庫或使用其中的選項。 當我將它們寫入文本文件時,大量數據會佔用更多空間嗎? 什麼是最好的方式來存儲這個數組以備後用?BIGINT保存到文件
我有一個大陣,我需要保存到磁盤下一個用戶會話大整數的數組。我沒有數據庫或使用其中的選項。 當我將它們寫入文本文件時,大量數據會佔用更多空間嗎? 什麼是最好的方式來存儲這個數組以備後用?BIGINT保存到文件
我只是用一個普通的文本文件去找它,這個整數將佔用盡可能多的空間作爲它的字符串表示,所以2759275918572192759185721作爲一個大整數將佔用與2759275918572192759185721相同的空間作爲一個字符串(它不是那麼多)。
當從文件中讀取它們,你只需再次解析。
重要:沒有錯誤在此代碼處理!你abosolutely必須添加try-catch-finally到ctahc IOException和NumberformatException!
File file = new File("C:\\Users\\Phiwa\\Desktop\\test.txt");
if(!file.exists())
file.createNewFile();
FileWriter fw = new FileWriter(file);
BigInteger bint1 = new BigInteger("999999999999999999");
fw.write(bint1.toString());
fw.flush();
fw.close();
// BigInteger has been written to file
// Read it from file again
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String str = br.readLine();
br.close();
BigInteger bint2 = BigInteger.valueOf(Long.parseLong(str));
System.out.println(bint2);
這個工程,你已經嘗試過嗎?
事情是有點不同的,如果你有在格式0x999999999999999整數,在這種情況下,你可以使用
BigInteger bint2 = new BigInteger(str.replace("0x", ""), 16);
哇感謝徹底反應。如果將數字保存到文本文件時,字符串就像字符串那樣,將bigint轉換爲十六進制數,甚至更大的基數來保存存儲空間會不會更好? – Geremy 2014-12-06 11:01:45
當然,隨意將其轉換並使用六角形基座(應足夠大)。在這種情況下,你可以使用我的最後一行將它讀回到內存中,但即使我更喜歡十六進制,它也適用於所有基礎。 – Phiwa 2014-12-06 11:06:08
那麼你會推薦Hex基地作爲最佳做法嗎?或者有沒有一種轉換能夠在磁盤空間方面更高效? – Geremy 2014-12-06 11:10:07