簡體   English   中英

如何將文本寫入 java 文本文件中的下一個空行

[英]How to write text to a next empty line in text file in java

package ideat;

import java.nio.file.Paths;
import java.io.FileWriter;
import java.util.Scanner;

public class Paaohjelma {

    public static void main(String[] args) {
        
        try {
            
            Scanner tLuk = new Scanner(Paths.get("ideat.txt"));
            FileWriter tKirj = new FileWriter("ideat.txt");
            
            for (String line = tLuk.nextLine(); line.isBlank(); tKirj.append("\n")) {
                tKirj.write("textHere");
            }
   
            tKirj.close();
            tLuk.close();
            
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

我創建了一個循環遍歷 txt 文件,直到找到要寫入的空行,但這不起作用,因為當 Scanner 嘗試讀取下一行為空時,java 不會引發下一行異常。 該程序的目的是將新想法添加並保存到文本文件中,這就是我不想覆蓋現有文本行的原因。

一旦您以寫入模式打開正在讀取的文件,讀取的文件描述符就會損壞。 它可能沒有損壞,但是一旦寫了一些東西,它就會被損壞,尤其是當描述符讀取的內容被覆蓋時。

所以,你應該采取重寫和替換的方法:

        try {
            Scanner tLuk = new Scanner(Paths.get("ideat.txt"));
            FileWriter tKirj = new FileWriter("ideat.txt.tmp");
            
            while (tLuk.hasNextLine()) {
                String line = tLuk.nextLine();
                if (line.isBlank()) {
                    tKirj.write("textHere");
                } else {
                    tKirj.write(line);
                }
            }

            tKirj.close();
            tLuk.close();
        } catch (Exception e) {

然后,將文件ideat.txt替換為ideat.txt.tmp

Files.move(
    Paths.get("ideat.txt.tmp"),
    Paths.get("ideat.txt"),
    StandardCopyOption.REPLACE_EXISTING
);

暫無
暫無

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

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