在文件中找到一行并删除它

在文件中找到一行并删除它

我正在寻找一个小的代码片段,它将在文件中找到一行并删除该行(不是内容,而是行),但找不到。因此,例如,我在一个文件中有以下内容:

myFile.txt:

aaa
bbb
ccc
ddd

需要有这样的功能:public void removeLine(String lineContent),如果我通过removeLine("bbb")我得到了这样的文件:

myFile.txt:

aaa
ccc
ddd


茅侃侃
浏览 440回答 3
3回答

绝地无双

这个解决方案可能不是最优的或漂亮的,但它有效。它逐行读取输入文件,将每一行写入临时输出文件。每当遇到与您所寻找的内容相匹配的行时,它都会跳过编写该行。然后重命名输出文件。我在示例中省略了错误处理、读者/作者的关闭等。我还假设在您要寻找的行中没有前导或尾随空格。根据需要更改TRIM()周围的代码,以便找到匹配的代码。File inputFile = new File("myFile.txt");File tempFile = new File("myTempFile.txt"); BufferedReader reader = new BufferedReader(new FileReader(inputFile)); BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); String lineToRemove = "bbb";String currentLine;while((currentLine = reader.readLine()) != null) {     // trim newline when comparing with lineToRemove     String trimmedLine = currentLine.trim();     if(trimmedLine.equals(lineToRemove)) continue;     writer.write(currentLine + System.getProperty("line.separator"));     }writer.close(); reader.close(); boolean successful = tempFile.renameTo(inputFile);

慕容森

 public void removeLineFromFile(String file, String lineToRemove) {     try {       File inFile = new File(file);       if (!inFile.isFile()) {         System.out.println("Parameter is not an existing file");         return;       }       //Construct the new file that will later be renamed to the original filename.       File tempFile = new File(inFile.getAbsolutePath() + ".tmp");       BufferedReader br = new BufferedReader(new FileReader(file));       PrintWriter pw = new PrintWriter(new FileWriter(tempFile));       String line = null;       //Read from the original file and write to the new       //unless content matches data to be removed.       while ((line = br.readLine()) != null) {         if (!line.trim().equals(lineToRemove)) {           pw.println(line);           pw.flush();         }       }       pw.close();       br.close();       //Delete the original file       if (!inFile.delete()) {         System.out.println("Could not delete file");         return;       }       //Rename the new file to the filename the original file had.       if (!tempFile.renameTo(inFile))         System.out.println("Could not rename file");     }     catch (FileNotFoundException ex) {       ex.printStackTrace();     }     catch (IOException ex) {       ex.printStackTrace();     }   }这是我在网上找到的。

不负相思意

您想要做的事情如下:打开旧文件读取打开一个新的(临时)文件以便写入遍历旧文件中的行(可能使用缓冲阅读器)对于每一行,检查它是否与要删除的内容匹配。如果匹配,什么也不做如果不匹配,将其写入临时文件完成后,关闭两个文件。删除旧文件将临时文件重命名为原始文件的名称。(我不会写实际的代码,因为这看起来像家庭作业,但是可以随意地在您遇到麻烦的特定部分上发布其他问题)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java