簡體   English   中英

替換Java中的一行文本

[英]Replacing a line of text in Java

我有一個自動櫃員機,我需要打開一個文本文件,其中包含以下格式的帳戶信息:

  • 帳號
  • 名字
  • 平衡(不會有空白,但該網站不會讓我)

文件名為Accountnfomation.txt。

基本上,我需要能夠根據用戶需要替換/更改“余額”值。 我知道如何在文本文件中找到帳號,但是我不知道如何跳過接下來的兩行並進行編輯。 這是我編寫的一些代碼:

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 
        }
    }
}

到目前為止,這就是我所擁有的。 它會找到帳號,但是我不知道下一步該怎么做。

在您遇到的問題中,最好先更改,更改並保持其他所有內容不變。 不幸的是,文件不是行的集合,而是字節的集合。 如果要將“ 10”更改為“ 1000”,則需要插入一些新的字節,這意味着其后面的所有內容都需要向下移動幾個字節(假設為utf8,則大概為四個左右)。

在現實世界中,我們通過不將數據存儲在平面文件中來解決此問題。 假設您仍然想要一種非常簡單的,基於文件的,人類可讀的格式:

  • 每個條目使用一個文件。 您將擁有一個包含許多文件的目錄,但是重寫更改的文件和按文件名建立索引的艱巨工作將由os完成。
  • 使用固定的字段寬度格式。 定義每個字段的寬度,然后跳到所需的數據。 您可以像訪問大型數組一樣訪問數據。
  • 使用預定格式和易於使用的工具進行解析和處理。 想到XML和CSV

使用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然后使用StringBuildertoString()方法將內容存儲在文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM