我的first question是关于stax writer的速度。现在我遇到了一个问题:我无法使用delete();
它仍以某种方式被使用。我试图手动删除它,但我不能
在文件创建时,我为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 :(得分:3)
关闭XMLStreamWriter不会关闭基础输出流。
请参阅:
http://docs.oracle.com/javaee/5/api/javax/xml/stream/XMLStreamWriter.html#close()
答案 1 :(得分:0)
有趣的是,虽然可能是反直觉的,但如果你在Windows上使用Sun JVM,那么对System.gc()进行厚颜无耻的调用可能会有所帮助。是的,是的,我知道,我们“从不”必须明确地调用gc,并且“无法保证”运行等等。但请相信我,这是一个有时会出现的已知问题。