Java 尝试从文件加载数字时获取随机数 编辑:我正在尝试创建一个“点击”游戏,从数据文件中加载最后记录的数字。

Java 尝试从文件加载数字时获取随机数 编辑:我正在尝试创建一个“点击”游戏,从数据文件中加载最后记录的数字。,java,swing,Java,Swing,我正在开发一款简单的单按钮游戏,这是一款点击游戏。没什么特别的,只是一个JButton和一个JLabel。我对Java IO类相当陌生,所以我不知道是什么导致了这种情况。我没有得到任何错误,而是一个随机数,除了每次都是相同的数字 写入方法: 读取方法: 图形用户界面: 还有我得到的随机数(48),当我点击按钮时,它应该增加1。但现在因为它从“48”开始,第一次点击:增加1。第二:4。第三:1。然后停止增加。我想写入文件的原因是,我可以加载最后录制的数字 从属性文件检索数据: 存储数据 首先创建一

我正在开发一款简单的单按钮游戏,这是一款点击游戏。没什么特别的,只是一个
JButton
和一个
JLabel
。我对Java IO类相当陌生,所以我不知道是什么导致了这种情况。我没有得到任何错误,而是一个随机数,除了每次都是相同的数字

写入方法: 读取方法: 图形用户界面:
还有我得到的随机数(48),当我点击按钮时,它应该增加1。但现在因为它从“48”开始,第一次点击:增加1。第二:4。第三:1。然后停止增加。我想写入文件的原因是,我可以加载最后录制的数字

属性
文件检索数据:

存储数据 首先创建一个
Properties
对象并向其添加数据。您可以认为它的行为类似于
映射
。每个键都有一个存储的关联值。不幸的是,
Properties
只存储字符串,但我们可以解决这个问题:

Properties props = new Properties();
props.setProperty("SomeKey", "SomeValue"); // String => String
props.setProperty("AnotherKey", String.valueOf(123456L)); // String => String (Long)
当然,
123456L
可以替换为long(或任何其他基元类型)变量。对于非原语,可以使用
.toString()
。(有关非基本体,请参见底部的注释)

要将数据写入文件,您需要一个
FileOutputStream

FileOutputStream output = new FileOutputStream("config.properties");
然后写入该文件:

props.store(output, null);
如果您打开该文件,它是纯文本,您将看到如下内容:

#Sun Jul 16 22:47:45 EST 2017
SomeKey=SomeValue
AnotherKey=123456
读取数据 读取数据正好相反,现在我们需要一个
FileInputStream
,我们将调用
.load()

现在,最后一部分是访问数据,记住一切都是字符串

String someKey = props.getProperty("SomeKey");
long anotherKey = Long.valueOf(props.getProperty("AnotherKey"));
这就是一切


您可以使用
Long.parseLong(props.getProperty(“AnotherKey”))
而不是
.valueOf()


对于非原语,这很可能不是一种方法,因为所有内容都保存为字符串。对于非原语,通常在将数据存储到文件以供以后在程序中使用时查看

,我喜欢使用
属性
类。你忘了提你想做什么了。@shmosel-Lol。从技术上说,我提了,但我没有提。我会编辑它。它只是碎片。
data=reader.read()
->
data=Long.parseLong(reader.readLine())
@StarCoder如果您愿意,我可以发布一个关于如何使用
属性
类的答案。非常感谢!我真的很感激,让它工作起来了@StarCoder没问题:)这也是我要补充的另一个问题——当使用非原语时,这会变得非常棘手。在这种情况下,您需要查看
Serializable
谢谢。你真的很在行!大量的练习。。每个人都有能力,只是要让它成为每天的事情。相信我,你永远不会停止学习。我只是想找个地方学Java。我去年在学校教的那本书只是一个介绍。考虑去上大学。
props.store(output, null);
#Sun Jul 16 22:47:45 EST 2017
SomeKey=SomeValue
AnotherKey=123456
FileInputStream input = new FileInputStream("config.properties");

Properties props = new Properties();
props.load(input);
String someKey = props.getProperty("SomeKey");
long anotherKey = Long.valueOf(props.getProperty("AnotherKey"));