我有一台ATM,我需要打开一个文本文件,其中包含以下格式的帐户信息:
文件名是Accountnfomation.txt。
基本上,我需要能够根据用户的需要替换/更改Balance值。我知道如何在文本文件中找到帐号,但我不知道如何跳过下两行并进行编辑。这是我写的一些代码:
try {
Scanner Account= new Scanner(new File ("AccountInformation.txt"));
FileOutputStream Account2= new FileOutputStream ("AccountInformation.txt",true);
while (Account.hasNextLine()) {
String nextToken = Account.next();
if (nextToken.equalsIgnoreCase(MyLoginID)) { //searches for specific match
// the idea here would to be to edit balance amount
}
}
}
这是我到目前为止所拥有的。它找到了帐号,但我不知道下一步该做什么。
答案 0 :(得分:1)
在您的问题中,最好到达您想要更改的行,更改它,并将其他所有内容保持不变。不幸的是,文件不是行的集合,而是字节的集合。如果你想改变" 10"到" 1000"你需要插入一些新的字节,这意味着它背后的一切都需要向下移动几个字节(假设utf8可能是四个左右)。
在现实世界中,我们通过不将数据存储在平面文件中来解决这个问题。假设你仍然想要一个非常简单的,基于文件的,人类可读的格式:
答案 1 :(得分:0)
使用nio:
Path path = FileSystems.getDefault().getPath(filePath);
try {
List<String> lines = Files.readAllLines(path);
} catch (IOException e) {
e.printStackTrace();
}
所以根据你的格式平衡将是索引3(没有任何空行)。因此,您拨打lines.set(3, newBalance);
,再次循环播放这些行,将其添加到另一个StringBuilder
,然后使用toString()
的{{1}}方法将内容存储到文件中。