Удалить конкретную строку из текстового файла Java? - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу удалить конкретную строку из текстового файла.Я нашел эту строку, но что делать дальше?Есть идеи?

Ответы [ 6 ]

5 голосов
/ 27 апреля 2011

Нет волшебства при удалении строк.

  • Копируйте файл построчно, без ненужной строки.
  • Удалите оригинальный файл.
  • переименуйте копию в исходный файл.
4 голосов
/ 27 апреля 2011

Считать файл из потока и записать его в другой поток и пропустить строку, которую вы хотите удалить

2 голосов
/ 25 августа 2014

Попробуйте прочитать файл:

 public static String readAllText(String filename) throws Exception {
    StringBuilder sb = new StringBuilder();
    Files.lines(Paths.get(filename)).forEach(sb::append);
    return sb.toString();
}

затем разделить текст от конкретного символа (для новой строки "\ n")

private String changeFile(){
String file = readAllText("file1.txt"); 
String[] arr = file.split("\n"); // every arr items is a line now.
StringBuilder sb = new StringBuilder();
for(String s : arr)
{
   if(s.contains("characterfromlinewillbedeleted"))
   continue;
   sb.append(s); //If you want to split with new lines you can use sb.append(s + "\n");
}
return sb.toString(); //new file that does not contains that lines.
}

затем записать строку этого файла в новый файл с помощью:

public static void writeAllText(String text, String fileout) {
    try {
        PrintWriter pw = new PrintWriter(fileout);
        pw.print(text);
        pw.close();
    } catch (Exception e) {
        //handle exception here
    }
}


writeAllText(changeFile(),"newfilename.txt");
1 голос
/ 16 января 2017

Попробуйте этот код.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


class Solution {
    public static void main(String[] args) throws FileNotFoundException, IOException{

        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);
        System.out.println(successful);

    }
}
1 голос
/ 27 апреля 2011

Удаление текстовой строки непосредственно в файле невозможно.Мы должны прочитать файл в память, удалить текстовую строку и переписать отредактированный контент.

0 голосов
/ 26 октября 2016

Может быть, метод поиска будет делать то, что вы хотите, т. Е. Метод "поиска" принимает строку в качестве параметра и ищет ее в файле и заменяет строку, содержащую эту строку.

PS:

public static void search (String s)
{
    String buffer = "";
    try {

        Scanner scan = new Scanner (new File ("filename.txt"));
        while (scan.hasNext())
        {
            buffer = scan.nextLine();

            String [] splittedLine = buffer.split(" ");
            if (splittedLine[0].equals(s))
            {

                buffer = "";

            }
            else
            {
                //print some message that tells you that the string not found


            }
        }
        scan.close();

    } catch (FileNotFoundException e) {
        System.out.println("An error occured while searching in file!");
    }

}
...