2016-04-08 10 views
1

So ist das Problem, ich habe eine Textdatei mit Informationen, die viele Zeilen hat. Jede Zeile sollte wie folgt aussehen:Entfernen Sie eine bestimmte Zeile in einer Datei mit der Zeilennummer

Produkt: < Name:, Import Preis:, Anzahl:>

Ich versuche, Code zu schreiben, der die Benutzer zur Eingabe hilft eine Nummer und das Programm findet eine dieser Nummer entsprechende Zeile und entfernt diese Zeile. Irgendwelche Vorschläge?

+0

dies lesen: http://stackoverflow.com/questions/20039980/java-replace-line-in-text-file –

+0

Lies [Wie eine bestimmte Zeile unter Verwendung der spezifischen Zeilennummer aus einer Datei lesen in Java?] (http://stackoverflow.com/questions/2312756/how-to-read-a-specific-line-using-the-specific-line-number-from-a-file-in-java) – Braj

+0

Ist es eine Datei, die eine feste Länge von Zeichen in jeder Zeile enthält, dann können Sie leicht zu einer bestimmten Zeilennummer springen, ohne vorherige zu lesen, ansonsten haben Sie alle vorherigen Zeilen gelesen und zählen auf gelesene Zeilennummern. Verwenden Sie [RandomAccessFile] (https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html) oder [LineNumberReader] (https://docs.oracle.com/javase/7/). docs/api/java/io/LineNumberReader.html) oder [BufferedReader] (https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html) – Braj

Antwort

1

Versuchen Sie unter Codezeile verwenden:

FileInputStream fs= new FileInputStream("someFile.txt"); 

BufferedReader reader = new BufferedReader(new InputStreamReader(fs)); 
BufferedWriter writer = new BufferedWriter(new FileWriter(fs)); 

for(int i = 0; i < file_length; ++i){ 
    br.readLine(); 
    String lineIWant = br.readLine(); 
    if(i==your line number){ 
     i = file_length; 
     writer.write(currentLine + System.getProperty("line.separator")); 
    } 
} 
reader.close(); 
writer.close(); 
+0

Wie bekommen Sie '' file_length''? – muzahidbechara

+0

@muzahidbechara PLZ diesen Link lesen http://stackoverflow.com/questions/12749655/how-to-count-lines-in-file-txt-android –

0

Sie auch LineNumberReader verwenden können:

import java.io.LineNumberReader; 
import java.io.FileReader; 
import java.io.IOException; 

class Stackoverflow36491903 { 
    public static void main(String[] args) throws IOException { 
     int lineNo = Integer.valueOf(args[1]); 

     LineNumberReader r = new LineNumberReader(new FileReader(args[0])); 
     while (true) { 
      String line = r.readLine(); 
      if (line == null) { 
       break; 
      } 
      if (r.getLineNumber() != lineNo) { 
       System.out.println(line); 
      } 
     } 
    } 
} 

nimmt zwei Argumente: Name der Datei, und eine Zeilennummer.

Es werden nur die Zeilen gedruckt, die die Zeile bei der angeforderten Zeilennummer entfernen.

Verwenden Sie einen Writer, um es zurück in eine Datei zu schreiben.

0
Scanner scan = new Scanner(System.in); 
int lineNum = scan.nextInt(); 
File file = new File("file.txt"); 
FileReader reader = new FileReader(file); 
scan = new Scanner(reader); 
StringBuilder sb = new StringBuilder(""); 
while(scan.hasNextLine()) { 
    String line = scan.nextLine(); 
    if (--lineNum != 0) sb.append(line).append(System.getProperty("line.separator")); 
} 
FileWriter writter = new FileWriter(file); 
writter.write(sb.toString()); 
Verwandte Themen