My first question was about the speed of stax writer. Now I have a problem: I can't delete the XML file I created, with delete();
It is still being used somehow. I have tried to delete it manually but I could not.
At the and of file creation I call method close()
for StreamWriter.
I am trying to delete file right after this method is done, in another file.
Something like: startstopwath;createxml(); stopstopwatch; file.delete()
Do I have to add something more there?
Here is my code:
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();
}
}
}
I am trying to delete it here:
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();
}
Closing the XMLStreamWriter does not close the underlying output stream.
see:
http://docs.oracle.com/javaee/5/api/javax/xml/stream/XMLStreamWriter.html#close()