我目前正在做一个编程任务,它说我们应该 “将所有数据存储在数据文件中,并且需要检查用户PIN和帐号有效性的兼容性”在java中存储永久数据的方法
不幸的是我的演讲还没有教给我们的数据文件,当我用Google搜索我发现了两个不同的答案,在记事本
- 存储数据文件(.txt)在csv文件的文件
- 存储数据
我的问题是哪一个是数据文件?以及如何检索用户PIN(在从缓冲器读取器输入之后)以检查两者是否正确? 任何帮助非常感谢!
我目前正在做一个编程任务,它说我们应该 “将所有数据存储在数据文件中,并且需要检查用户PIN和帐号有效性的兼容性”在java中存储永久数据的方法
不幸的是我的演讲还没有教给我们的数据文件,当我用Google搜索我发现了两个不同的答案,在记事本
我的问题是哪一个是数据文件?以及如何检索用户PIN(在从缓冲器读取器输入之后)以检查两者是否正确? 任何帮助非常感谢!
从维基百科:
的数据文件是一个计算机文件,该文件存储 使用的数据由计算机 应用程序或系统。
因此,*.txt
文件和*.csv
文件都是数据文件。
一个*.csv
(逗号分隔值)文件在本质上是*.txt
文件被你发现了应该做同样的一个,
2种方法分离你的价值观,但它会更容易使用CSV -方法。
不管它是txt还是csv。你甚至可以将它保存在xml中。 不要与文件扩展名混淆。您应该关心的唯一事情是“如何保存/加载这些数据”。
好运
的最简单的方法是使用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码。
序列化是持久性存储的另一种方法。
您可以创建一个实现Serializable的类,并为每个要存储的数据段添加一个字段。然后你可以把整个班级写到一个文件中,然后你就可以读回来。我相信Serializable接口将类输出成某种二进制/十六进制表示形式。
还有其他方法可以在不使用标准Java序列化的情况下进行序列化,就像您可以使用JSON库一样。
如果您需要特定的文本文件,也可以使用标准Java序列化来输出代表对象的XML文件。如何实现这一点的解释可以在这里找到:http://www.developer.com/xml/article.php/1377961/Serializing-Java-Objects-as-XML.htm – Zoe 2010-08-27 17:20:56
我也这样做了,但属性对象(p)没有任何可用的方法。所以setProperty,store和load方法都会导致错误。但是,对象创建语句没有任何错误 – Yoosuf 2010-08-29 06:28:18
@Yoosuf - 完全限定的类名是['java.util.Properties'](http://download.oracle.com/javase/6/docs/api/java/ UTIL/Properties.html)。 – 2010-08-29 20:53:29
p.store有错误。它应该是:p.store(new FileWriter(“myfile.properties”),“”);这编译! – 2018-02-01 12:05:18