这个问题不同于通常的“我需要替换一行代码”的问题,至少我希望如此。
我想在一个名为accounts.txt的文本文件中编辑一行代码,而不是使用该行作为替换的标志,我需要使用它上面的行,因为文件的进程是“account number,balance”。感谢您的帮助!这是我目前掌握的情况。
public boolean modifyBalance(int accountNum, int newBalance) {
try {
FileReader fileReader = new FileReader("accounts.txt");
BufferedReader file = new BufferedReader(fileReader);
String line;
String input = "";
String flag;
boolean foundFlag = false;
Integer intInstance = accountNum;
flag = intInstance.toString();
while ((line = file.readLine()) != null) {
input += line;
if (line.equals(flag)) {
file.readLine();
input += "\n" + newBalance;
foundFlag = true;
}//end if
}//end while
return foundFlag;
} //end try
catch (IOException e) {
System.out.println("Input Failure in Modify Balance of Account"
+ " Repository.");
System.exit(0);
return false;
}
// look up inObj in the text file and change the associated
// balance to newBalance
}
2条答案
按热度按时间bgibtngc1#
这里有一个方法。
过程:
-将文件的所有行写入
ArrayList
-如果你找到了旗子,那就标记行号-如果您的行号不是-1,则您找到了帐户,然后对
ArrayList
把所有的行写回文件。笔记:
您需要确保正在关闭文件句柄。
理想情况下,应该将此代码分解为至少两个方法。一种方法用于查找行号,另一种方法用于在找到帐户时将文件写回。
使用时要小心
System.exit()
我在我的代码中对此进行了注解,因为如果您得到一个IOException
. 也可以抛出异常或将其 Package 到RuntimeException
让调用代码来处理。你可以考虑
newBalance
变量必须是double
而不是int
tzcvj98z2#
这里有一些事情要考虑。
如果文件很小,您可以将整个内容读入一个字符串数组(查看Java7文件类的javadocs)。然后你可以前后移动数组来进行更改。然后把修改过的文件写出来。
如果文件很大,您可以从输入中读取数据,然后一次向临时文件写入一行数据(但要将输出延迟一行,这样您就可以触发输入标志)。然后删除旧的输入文件并重命名临时文件。