2016-04-08 3 views
1

Так что проблема в том, что у меня есть текстовый файл, хранящий информацию, которая имеет много строк. Каждая строка должна выглядеть следующим образом:Удалите определенную строку в файле, используя номер строки

продукта: < Имя:, Импорт Цена:, количество:>

Я пытаюсь написать код, который помогает пользователям ввести номер и программу найдет строку, соответствующую этому номеру, и удалит эту строку. Какие-либо предложения?

+0

Прочитайте это: http://stackoverflow.com/questions/20039980/java-replace-line-in-text-file –

+0

Прочитайте это [Как прочитать определенную строку, используя конкретный номер строки из файла в Java?] (http://stackoverflow.com/questions/2312756/how-to-read-a-specific-line-using-the-specific-line-number-from-a-file-in-java) – Braj

+0

Является ли это файлом, который содержит фиксированную длину символов в каждой строке, тогда вы можете перейти к определенному номеру строки, не читая предыдущие, иначе вы прочитали все предыдущие строки и сохранили бы количество строк для чтения строк. Используйте [RandomAccessFile] (https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html) или [LineNumberReader] (https://docs.oracle.com/javase/7/ docs/api/java/io/LineNumberReader.html) или [BufferedReader] (https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html) – Braj

ответ

1

Попробуйте использовать ниже строки кода:

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

Как вы получите '' file_length''? – muzahidbechara

+0

@muzahidbechara plz прочитать эту ссылку http://stackoverflow.com/questions/12749655/how-to-count-lines-in-file-txt-android –

0

Вы также можете использовать LineNumberReader:

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); 
      } 
     } 
    } 
} 

принимает два аргумента: имя файла и номер строки.

Это просто печатает линии, удаляющие линию по запрошенному номеру строки.

Используйте запись, чтобы записать ее в файл.

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()); 
Смежные вопросы