2015-10-21 141 views
0

我試圖在文件刪除後有20個字符。我已經看過關於這個的每一個堆棧溢出問題,沒有答案的工作。我已經看過每一個地方,沒有任何工作。 File.delete();不適合我。它寫入一個文件,並且每次按下按鈕時都會向其添加「1」。如果有20個1,則需要刪除該文件。爲什麼我不能刪除這個文件?

示例代碼:

String fileName1 = "data1.txt"; 
try { 
    FileWriter fw = new FileWriter(fileName1, true); 
    try (BufferedWriter bw = new BufferedWriter(fw)) { 
     bw.write("1"); 
     bw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(StudentRandomizerJFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} catch (IOException ex) { 
    Logger.getLogger(StudentRandomizerJFrame.class.getName()).log(Level.SEVERE, null, ex); 
} 
try { 
    Scanner scanner = new Scanner(new FileReader("data1.txt")); 
    String scannerData1 = scanner.nextLine(); 
    if (scannerData1.equals("11111111111111111111")) { 
     //In here is where its supposed to delete the file. 
    } 
} catch (FileNotFoundException ex) { 
    Logger.getLogger(StudentRandomizerJFrame.class.getName()).log(Level.SEVERE, null, ex); 
} 
+0

你試過關閉掃描儀對象然後試圖刪除文件?這可能會導致錯誤,因爲資源正在訪問它。 – 3kings

+1

您是否試過在關閉它之前關閉'Scanner' /'FileReader'文件,它可能首先在文件上具有讀鎖定? – MadProgrammer

+0

@MadProgrammer是的,沒有工作。 –

回答

0

似乎工作沒關係,我...

for (int index = 0; index < 50; index++) { 
    String fileName1 = "data1.txt"; 

    try (BufferedWriter bw = new BufferedWriter(new FileWriter(fileName1, true))) { 
     bw.write("1"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

    boolean deleteMe = false; 
    try (Scanner scanner = new Scanner(new FileReader("data1.txt"))) { 
     String scannerData1 = scanner.nextLine(); 

     if (scannerData1.length() >= 20) { 
      deleteMe = true; 
     } 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

    if (deleteMe) { 
     File file = new File(fileName1); 
     if (!file.delete()) { 
      System.out.println("!! Could not delete " + file); 
     } else { 
      System.out.println(file + " was deleted"); 
     } 
     System.out.println(file + " exists = " + file.exists()); 
    } 
} 

打印

data1.txt was deleted 
data1.txt exists = false 
data1.txt was deleted 
data1.txt exists = false 

也許你需要檢查,看看是否有正確的刪除文件的權限(但如果你有寫權限,你應該可以刪除它),並且你正在刪除你認爲是y的文件你正在刪除

+0

謝謝!完美的作品! :) –

相關問題