下面是我工作过的代码,它基本上遍历文件夹并从xml文件中提取数据并将数据输出到CSV文件中。所有这些工作。但我想每次运行程序时都创建新的输出csv文件。如果你们可以提供一些例子或修改我曾经工作的代码,我将不胜感激。请我现在几个小时一直试图找出解决方案。如何在每次使用Java运行程序时创建一个新文件
public class MergeCode1 {
public void walk(String path,Boolean is_parent) throws Exception {
File filePath = new File ("C:/Users/Vishvesh Savant/Desktop/Mirriad/");
System.out.println(filePath);
File root = new File(path); //Input File Path
File[] list = root.listFiles();
while(is_parent == false);
{
Random rand = new Random();
int value;
value=rand.nextInt(50)+1;
filePath = new File (("C:/Users/Vishvesh Savant/Desktop/Mirriad/"+"new_one"+value+".csv"));
}
try{
if (list == null) return;
System.out.println("2");
for (File f : list) {
DocumentBuilderFactory dbfactory = null;
DocumentBuilder dbuilder = null;
Document doc = null;
if (f.isDirectory()) {
walk(f.getPath(),false);
System.out.println("Dir:" + f.getAbsolutePath());
}
else {
System.out.println("File:" + f.getAbsolutePath());
dbfactory = DocumentBuilderFactory.newInstance();
dbuilder = dbfactory.newDocumentBuilder();
doc = dbuilder.parse(f.getAbsolutePath());
doc.getDocumentElement().normalize();
NodeList list1 = doc.getElementsByTagName("product");
FileWriter fileWriter = new FileWriter(filePath, true);
// String Fileheader="uid,title";
// fileWriter.append(Fileheader.toString());
// fileWriter.append("\n");
for(int i=0; i<list1.getLength();i++){
Node node = list1.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE){
Element element = (Element) node;
fileWriter.append(element.getAttribute("uid"));
System.out.println(element.getAttribute("uid"));
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("title").item(0).getTextContent());
System.out.println(element.getElementsByTagName("title").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("actor").item(0).getTextContent());
System.out.println(element.getElementsByTagName("actor").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("director").item(0).getTextContent());
System.out.println(element.getElementsByTagName("director").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("country").item(0).getTextContent());
System.out.println(element.getElementsByTagName("country").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("format").item(0).getTextContent());
System.out.println(element.getElementsByTagName("format").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("bitrate").item(0).getTextContent());
System.out.println(element.getElementsByTagName("bitrate").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("fps").item(0).getTextContent());
System.out.println(element.getElementsByTagName("fps").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("aspect").item(0).getTextContent());
System.out.println(element.getElementsByTagName("aspect").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getElementsByTagName("width").item(0).getTextContent());
System.out.println(element.getElementsByTagName("width").item(0).getTextContent());
fileWriter.append(",");
fileWriter.append(element.getBaseURI());
fileWriter.append(element.getAttribute("uid"));
fileWriter.append(element.getElementsByTagName("format").item(0).getTextContent());
fileWriter.append("\n");
//fileWriter.flush();
fileWriter.close();
}
}
}
}
}
catch (Exception e) {
System.out.println("Error!!!");
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
MergeCode1 fw = new MergeCode1();
fw.walk("C:/Users/Vishvesh Savant/Desktop/Mirriad/Test",true);
}
}
什么是'is_parent'?您目前的代码不符合要求的方式?你是否意识到你的'while'循环中有错误的';'? – EJP
是的,我在最近的努力中删除了while循环。 “is_parent”基本上是我的“public void walk”,而child方法是“walk(f.getPath(),false)”。我创建了一个标志来检查何时进行了父呼叫以及何时进行了子呼叫。所以当程序第一次运行时,在这种情况下将调用“父”,一个新的csv文件将被创建。 问题: 我无法在每次运行程序时创建一个新的csv,在我进行新更改后,为程序从位于不同文件夹中的xml文件中检索的每个记录创建新的csv。这是不正确的。 –
如果您想为您的最新努力提供解决方案,您必须发布最新的努力。这当然很明显? – EJP