2013-12-14 3 views
0

Вот мой код, чтобы удалить строку из файла. Этот код удаляет строку из созданного временного файла - но не заменяет исходный файл временным файлом, который редактируется.Удалить строку из текстового файла

оригинал файл остается как есть. редактирование происходит во временном файле и не переименовывается в исходный файл.

try{ 
    File inFile = new File("ext.txt"); 

    if (!inFile.isFile()) { 
    System.out.println("Parameter is not an existing file"); 
    return; 
    } 

    File tempFile = new File(inFile.getAbsolutePath()+".txt"); 

    BufferedReader br = new BufferedReader(new FileReader(inFile)); 
    PrintWriter pw = new PrintWriter(new FileWriter(tempFile)); 

    String line = null; 

    while ((line = br.readLine()) != null) { 

    if (!line.trim().equals(mystring)) { 

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

    } 

    pw.close(); 
    br.close(); 
    inFile.delete(); 
    tempFile.renameTo(inFile); 

    if (!inFile.delete()) { 
    System.out.println("Could not delete file"); 
    return; 
    } 

    if (!tempFile.renameTo(inFile)) 
    System.out.println("Could not rename file"); 

} 
catch (FileNotFoundException ex) { 
    ex.printStackTrace(); 
} 
catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+4

И ваш вопрос? – home

+0

PLZ прочитать последнюю строку. код не заменяет исходный файл отредактированным. – user3078848

+0

оригинал файл остается как есть. редактирование происходит во временном файле и не переименовывается в исходный файл. – user3078848

ответ

0

Ваш код работает отлично. Вам нужно сохранить логические значения file.delete и file.rename и использовать эти значения в ваших условиях «если». Недостаток заключается в том, что вы пытаетесь удалить и переименовать тот же файл, который уже был переименован и удален, поэтому его отказ от вашего условия if. Попробуйте сделать что-то вроде этого:

 boolean isDeleted = inFile.delete(); 
     boolean isRenamed = tempFile.renameTo(inFile); 

     if (!isDeleted) { 
     System.out.println("Could not delete file"); 
     return; 
     } 

     if (!isRenamed) 
     System.out.println("Could not rename file"); 
Смежные вопросы