为什么IDE和console在Java中对xml文件执行不同的操作?
我是XML文件操作的新手。我的程序在执行时应该这样做,它必须生成随机数并写入XML文件。每次我在NetBeans IDE中调试它时,一切都正常,但当我尝试在控制台中使用“Java-jar blabla.jar”执行它时,XML文件并没有改变,我仍然可以在XML文件中看到旧值。为什么会这样?为什么IDE可以修改XML中的值,而console不能 以下是我的XML操作代码块:为什么IDE和console在Java中对xml文件执行不同的操作?,java,xml,file,domparser,Java,Xml,File,Domparser,我是XML文件操作的新手。我的程序在执行时应该这样做,它必须生成随机数并写入XML文件。每次我在NetBeans IDE中调试它时,一切都正常,但当我尝试在控制台中使用“Java-jar blabla.jar”执行它时,XML文件并没有改变,我仍然可以在XML文件中看到旧值。为什么会这样?为什么IDE可以修改XML中的值,而console不能 以下是我的XML操作代码块: public class CreateXML { public CreateXML(ArrayList<Intege
public class CreateXML {
public CreateXML(ArrayList<Integer> array,String name){
try{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
String path="file"+name+".xml";
File xmlfile=new File(path);
if(xmlfile.exists()){
xmlfile.delete();
System.out.println("There was this file and it is deleted.");
}
Document doc=db.newDocument();
Element rootElement=doc.createElement("numberList");
doc.appendChild(rootElement);
for (int i = 0; i < array.size(); i++) {
Element staff=doc.createElement("number");
rootElement.appendChild(staff);
Attr attr=doc.createAttribute("id");
attr.setValue(Integer.toString(i));
staff.setAttributeNode(attr);
staff.setTextContent(Integer.toString(array.get(i)));
}
TransformerFactory tf=TransformerFactory.newInstance();
Transformer t=tf.newTransformer();
DOMSource source=new DOMSource(doc);
StreamResult result=new StreamResult(xmlfile);
t.transform(source, result);
}catch(Exception e){
e.printStackTrace();
}
}
}
public类CreateXML{
公共CreateXML(ArrayList数组,字符串名称){
试一试{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
String path=“文件”+name+“.xml”;
文件xmlfile=新文件(路径);
if(xmlfile.exists()){
xmlfile.delete();
System.out.println(“有这个文件,它被删除了”);
}
Document doc=db.newDocument();
元素rootElement=doc.createElement(“numberList”);
doc.appendChild(rootElement);
对于(int i=0;i
创建的文件可能不在您认为的位置,请尝试打印xmlfile.getAbsolutePath()
如果从IDE和jar运行代码,您确定运行的代码版本相同吗?@Berger我认为这不是问题所在,因为IDE可以找到该文件,但.jar文件无法找到。所以,我的意思是,如果路径不正确,IDE也无法找到该文件,对吗?@Jens是的,我确信版本是相同的。因为我在尝试从控制台执行之前单击了“清理并构建项目”按钮。xmlfile.getAbsolutePath()
只是为了证明路径不同。您可以使用绝对路径创建文件,例如file xmlfile=new file(“C:\\\\temp\\\\\\+“file”+name+.xml”)
创建的文件可能不在您认为的位置,请尝试打印xmlfile.getAbsolutePath()
如果您从IDE和jar运行代码,您确定您运行的代码版本相同吗?@Berger我认为这不是问题所在,因为IDE可以找到该文件,但.jar文件无法找到。所以,我的意思是,如果路径不正确,IDE也无法找到该文件,对吗?@Jens是的,我确信版本是相同的。因为我在尝试从控制台执行之前单击了“清理并构建项目”按钮。xmlfile.getAbsolutePath()
只是为了证明路径不同。您可以使用绝对路径创建文件,例如file xmlfile=new file(“C:\\\\temp\\\\\\+“file”+name+.xml”)代码>