2010-08-27 88 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