2015-10-21 61 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

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

相关问题