我有一个文件,其中包含模式user:pass:role
之后的行。现在我正在阅读整行,然后我用split解析字符串,修改值并创建一个新字符串,最后将这个新字符串写入文件(删除旧字符串)。
相反,我正在寻找一种通过变量读写变量的方法。例如,文件内容为:
jake:1234:developer
laura:qwerty:analyst
如果我想将Laura的角色改为dba,我想做类似的事情:
while file not empty do
user = read file till ':'
if user == "laura" then
read file till next ':'
modify "analyst" to "dba"
else readline
我怎么能这样做?
我已经阅读了有关修改文件Modifying existing file content in Java的问题,但答案是创建一个包含所需值的新文件,然后删除旧文件。
修改
所有这些都是因为如果我按照我现在实现的方法,新行最终会附加到文件中。例如,在上面的示例中,如果我将Jake的角色更改为dba,则文件将为:
laura:qwerty:analyst
jake:1234:dba
轻微改变,但我宁愿保留订单。
答案 0 :(得分:2)
你已经读过的答案是同等的:一般来说,同时读写同一个文件并不是一个好主意。
执行此任务的常用方法是使用临时文件。
答案 1 :(得分:0)
您可以通过RandomAccessFile课程执行此操作,但由于字段大小未固定,因此会很难且很复杂。