2013-07-29 2 views
0

Я пытался создать класс, который удаляет строку из текстового файла, который начинается с определенного числа. У меня в настоящее время нет ошибок кода, а также работает без erros; показывает «BUILD SUCCESSFUL» на netbeans, но ничего не делает с линией или какой-либо частью текстового файла, не говоря уже о удалении намеченной строки.Удаление строки, начинающейся с определенного номера в текстовом файле

Может кто-нибудь, пожалуйста, взглянуть на мой код и, пожалуйста, посоветуйте мне, что я мог сделать неправильно или пропал?

Большое спасибо.

Heres мой код:

package Database; 

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

public class Edit { 

    public void removeLineFromFile(String file, String lineToRemove) { 

    try { 

     File inFile = new File("/D:/TestFile.txt/"); 

     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(line.startsWith(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(); 
    } 
    } 

    public static void main(String[] args) { 
    Edit edit = new Edit(); 
    edit.removeLineFromFile("/D:/TestFile.txt/", "2013001"); 
    } 
} 
+0

Вы уверены, что '/ D:/TestFile.txt /' это путь к вашему файлу? –

+0

Вы просто строите и ожидаете, что ваш код будет запущен? – rocketboy

+0

Да. Это путь. –

ответ

0

Существует проблема с логикой ... вы говорите, если линия равна самой себе, что начинается с что никогда не произойдет, если только линия состоит только из линии, которую вы хотите удалить

if (!line.trim().equals(line.startsWith(lineToRemove)) 

я думаю, должно быть просто

if (!line.startsWith(lineToRemove)) 
0

Изменение если условие:

if (!line.startsWith(lineToRemove)) { 

      pw.println(line); 
      pw.flush(); 
     } 
+0

Ничего себе! Спасибо, парни. Это было так быстро! Изменения Даршана Мехты сделали трюк. Еще раз спасибо. –

+0

Если вы считаете, что мой ответ помог вам решить проблему, вы можете принять ее как правильный ответ. –

Смежные вопросы