2010-08-27 91 views
0

我目前正在做一個編程任務,它說我們應該 「將所有數據存儲在數據文件中,並且需要檢查用戶PIN和帳號有效性的兼容性」在java中存儲永久數據的方法

不幸的是我的演講還沒有教給我們的數據文件,當我用Google搜索我發現了兩個不同的答案,在記事本

  1. 存儲數據文件(.txt)在csv文件的文件
  2. 存儲數據

我的問題是哪一個是數據文件?以及如何檢索用戶PIN(在從緩衝器讀取器輸入之後)以檢查兩者是否正確? 任何幫助非常感謝!

回答

1

從維基百科:

的數據文件是一個計算機文件,該文件存儲 使用的數據由計算機 應用程序或系統。

因此,*.txt文件和*.csv文件都是數據文件。

一個*.csv(逗號分隔值)文件在本質上是*.txt文件被你發現了應該做同樣的一個,

2種方法分離你的價值觀,但它會更容易使用CSV -方法。

0

不管它是txt還是csv。你甚至可以將它保存在xml中。 不要與文件擴展名混淆。您應該關心的唯一事情是「如何保存/加載這些數據」。

  1. 保存爲.txt文件很好,但您可能需要定義自己的「格式」,以確保您可以加載該數據。
  2. 如果將它保存爲.csv也很好,因爲您不必創建自己的「格式」。只需遵循分隔符,封閉器等幾種傳統格式。
  3. 以另一種格式保存也不錯。例如,XML。但是,再次,您需要遵循XML中的傳統格式,如DTD。

好運

0

最簡單的方法是使用Properties類。它存儲鍵/值對,並可以將數據保存到屬性文件中。這裏有一個工作示例:

Properties p = new Properties(); 
p.setProperty("johndoe.pin", "12345"); 
p.store(new FileWriter("myfile.properties", ""); 

和閱讀:

Properties p = new Properties(); 
p.load(new FileReader("myfile.properties", ""); 

支票將與屬性來實現對象:

public boolean isValid(String user, String pin) { 
    return pin.equals(p.getProperty(user + ".pin")); 
} 

很容易當然沒有加密。該文件以純文本形式存儲,包括PIN碼。

+0

我也這樣做了,但屬性對象(p)沒有任何可用的方法。所以setProperty,store和load方法都會導致錯誤。但是,對象創建語句沒有任何錯誤 – Yoosuf 2010-08-29 06:28:18

+0

@Yoosuf - 完全限定的類名是['java.util.Properties'](http://download.oracle.com/javase/6/docs/api/java/ UTIL/Properties.html)。 – 2010-08-29 20:53:29

+0

p.store有錯誤。它應該是:p.store(new FileWriter(「myfile.properties」),「」);這編譯! – 2018-02-01 12:05:18

0

序列化是持久性存儲的另一種方法。
您可以創建一個實現Serializable的類,併爲每個要存儲的數據段添加一個字段。然後你可以把整個班級寫到一個文件中,然後你就可以讀回來。我相信Serializable接口將類輸出成某種二進制/十六進制表示形式。

還有其他方法可以在不使用標準Java序列化的情況下進行序列化,就像您可以使用JSON庫一樣。

+0

如果您需要特定的文本文件,也可以使用標準Java序列化來輸出代表對象的XML文件。如何實現這一點的解釋可以在這裏找到:http://www.developer.com/xml/article.php/1377961/Serializing-Java-Objects-as-XML.htm – Zoe 2010-08-27 17:20:56