2013-05-04 101 views
1

我的first question是關於stax作家的速度。現在我遇到了一個問題:我無法刪除我創建的XML文件,其中包含delete();爲什麼我不能刪除我創建的XML文件?

它仍在以某種方式使用。我試圖手動刪除它,但我不能。
在文件創建過程中,我爲StreamWriter調用方法close()

我想在此方法完成後,在另一個文件中刪除文件。 類似於:startstopwath;createxml(); stopstopwatch; file.delete()我需要在此添加更多內容嗎?

這裏是我的代碼:

import java.io.*; 
import java.util.*; 
import javax.xml.stream.*; 
import org.springframework.util.StopWatch; 

public class StAXVytvor { 

    public static String subor = "test.xml"; 

    public static void main(String[] args) { 
     int num =600000; 
     try { 
      String encoding = "UTF-8"; 
      XMLOutputFactory f = XMLOutputFactory.newInstance(); 
      XMLStreamWriter w = f.createXMLStreamWriter(new BufferedOutputStream(newFileOutputStream(subor)), "UTF-8"); 
      w.writeStartDocument(encoding, "1.0"); 
      w.writeCharacters("\r\n"); 
      w.writeStartElement("Noviny");   
      for (int i = 1; i <= num; i++) { 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("Author"); 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("Id"); 
       String ID = Integer.toString(i); 
       w.writeCharacters(ID); 
       w.writeEndElement(); 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("Meno"); 
       w.writeCharacters("Autor"+i); 
       w.writeEndElement(); 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("Email"); 
       w.writeCharacters("Author"+i+"@email.com"); 
       w.writeEndElement(); 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("phone"); 
       w.writeAttribute("type", "pevna"); 
       w.writeCharacters("+4219"); 
       w.writeEndElement(); 
       w.writeCharacters("\r\n "); 
       w.writeStartElement("plat"); 
       w.writeCharacters("5000"); 
       w.writeEndElement(); 
       w.writeCharacters("\r\n ");   
       w.writeEndElement(); 
       w.writeCharacters("\r\n"); 
      } 
      w.writeCharacters("\r\n"); 
      w.writeEndElement();   
      w.writeCharacters("\r\n"); 
      w.writeEndDocument(); 
      w.close(); 

      System.out.println("success"); 

     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我想在這裏刪除:

domvytvor.main(args); 
try { 

    File file = new File ("STAX.xml"); 

    if(file.delete() && file1.delete()){ 
     System.out.println(file.getName() + " is deleted!"); 
    } 
    else{ 
     System.out.println("Delete operation is failed."); 
    } 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
+0

您應該關閉'finally'塊中的資源。在何處以及如何定義'file1'? – skirsch 2013-05-04 19:04:29

回答

0

有趣的是,和反直覺的,雖然它可能是,如果你使用的是Sun JVM在Windows上,面露調用System.gc()的可能做的招。是的是的,我知道,我們「從不」必須明確地調用gc,並且「不保證」運行等。但相信我,這是一個有時會出現的已知問題。

相關問題