2016-08-13 52 views
-4

他們有什麼區別?以下哪一項是創建文件的最佳方式?

如何以文本格式存儲數據並在需要時檢索它?

我怎樣才能以一種簡單的方式存儲數據,直到我學習sql?

try{ 

    FileWriter fileWriter=new FileWriter("C:\\Users\\acer\\Downloads\\java  Q//somthing.txt"); 
    fileWriter.write("here is the first text"); 

    fileWriter.append(" \n the secound one "); 
    fileWriter.close(); 

} // try 

catch(IOException e){ 

    System.out.println(" an error occer "); 


} // catch 

還是那個樣子

WriteFile writeFile=new WriteFile(); // a class WriteFile the implements Serilizable 


try{ 

FileOutputStream fileOutputStream=new FileOutputStream("C:\\Users\\acer\\Downloads\\java Q//something.ser"); 

ObjectOutputStream objectoutputs=new ObjectOutputStream(fileOutputStream); 

objectoutputs.writeObject(writeFile); 

objectoutputs.flush(); 

objectoutputs.close(); 
} // try 

catch(IOException e){ 

    System.out.println("an error occer"); 

} // catch 
+0

這取決於您的軟件的要求。序列化可能是危險的,檢查出[這個評論](http://stackoverflow.com/questions/38904182/store-restore-snapshot-state-of-entire-application/38904365#comment65227627_38904365)我寫了你爲什麼想要在存儲狀態到驅動器時​​避免序列化。我建議一個簡單的'FileWriter'或將狀態存儲到'Properties'文件中。如果用戶在存儲到驅動器時​​不應讀取數據,則可以創建自己的加密系統來轉換正在存儲的狀態。 –

+0

2016年,「純Java對象序列化」絕對不是您的首選。它帶有很多限制;甚至有安全隱患。如果有的話,考慮將其「序列化」爲JSON字符串並將其保存爲可讀的文本。這使得測試對你來說更容易;並給予你天真的想法;我想你會花費很多時間......測試和調試。 – GhostCat

+0

@GhostCat JSON很容易閱讀。如果存儲到驅動器,用戶可以(輕鬆地)訪問和編輯JSON以利用該軟件。還有其他形式的本地永久存儲容易測試但很難利用。它強烈依賴於他的軟件的要求。 –

回答

0

如果你可以寫文本,使用。這是最簡單的工作。您可以查看它並在文本編輯器中進行編輯。

你應該使用序列化時,你有不能容易變成文本對象(或性能方面的原因,雖然Java序列化是非常緩慢的,所以它不是針對任何一個不錯的選擇)

BTW:我將避免

  • 在路徑中同時使用了\\/。只用一個或另一個。
  • 在目錄名稱中使用多個空格。這令人恐懼,恕我直言,除非你可以說爲什麼你正在使用完全的多餘空間。
  • 使用.write().append()但不是兩者。
  • 使用try-with-resource關閉Closeable FileWriter。

例如

File file = new File("C:\\Users\\acer\\Downloads\\java Q\\something.txt"); 
try (PrintWriter pw = new PrintWriter(file)) { 
    ps.println("here is the first text"); 
    ps.println("the second one "); 
} 
相關問題