繁体   English   中英

如何使用 java 删除文本文件中的数据行? 例如。 我的文本文件是 data.txt

[英]How can I delete lines of data in textfile using java? eg. my textfile is data.txt

从读取用户需要删除的以将其删除

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class Delete {

    public static void main(String[] args) throws IOException {

        File input = new File("data.txt");
        FileReader fr = null;
        Scanner ob = new Scanner(System.in);

        // declare variable
        String DeleteWord, str, newDeleteWord;
        System.out.print("Enter word you want to delete: ");
        DeleteWord = ob.nextLine();
        newDeleteWord = (capitalize(DeleteWord));

        try {
            fr = new FileReader(input);
            BufferedReader br = new BufferedReader(fr);

            while ((str = br.readLine()) != null) {
                if (str.contains(newDeleteWord)) {
                    System.out.println(str);
                }

                Scanner read = new Scanner(System.in);
                int selection;
                System.out.println("Confirm to delete his/her data?\n 1 for yes\n 2 for no");
                selection = read.nextInt();

                if (selection == 1)
                    if (str.contains(newDeleteWord)) {
                        str = "";
                    }
            }
        } finally {
            fr.close();
        }
    }

    public static String capitalize(String str1) {
        if (str1 == null || str1.isEmpty()) {
            return str1;
        }
        return str1.substring(0, 1).toUpperCase() + str1.substring(1);
    }
}

如何使用 java 删除文本文件中的数据行? 例如。 我的文本文件是 data.txt

这是一个可能的解决方案:

File inputFile = new File("myFile.txt"); // File which we will read
File tempFile = new File("myTempFile.txt"); // The temporary file where we will write

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String lineToRemove = yourString; // here is your line to remove
String currentLine;

while((currentLine = reader.readLine()) != null) {
    
    String trimmedLine = currentLine.trim(); // we trim it and remove unecessary spaces
    if(trimmedLine.equals(lineToRemove)) continue; // If it is equal to our line to remove then do not write it to our file!
    writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close(); 
reader.close(); 
inputFile.delete(); // we delete the file that we have so that we have no conflicts
boolean successful = tempFile.renameTo(inputFile);

或者

读取列表中的所有行并过滤此列表。

最快的方法是通过Apache Commons-IO(或者你可以自己实现)

Apache 共同点:

List<String> lines = FileUtils.readLines(file);
List<String> updatedLines = lines.stream().filter(s -> !s.contains(searchString)).collect(Collectors.toList());
FileUtils.writeLines(file, updatedLines, false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM