将列表内容复制到文件夹中

时间:2020-06-28 19:05:53

标签: java xml arraylist

我有一个包含规则的arrayList“ rules”。每个规则都是一个XML文件,并具有一些属性,例如文件名...

我想将规则从阵列列表复制到名为AllMRG的文件夹中。我在注释之间尝试了代码,但收到消息“源'RG6.31.xml'不存在”。

我通过以下方式更改了代码,但是'RG6.31.xml'仍然存在问题,即使arrayList包含许多规则,文件夹AllMRG还是空的!

第一次尝试:

File AllMRGFolder = new File("AllMRG");
for(int p = 0; p < rules.size(); p++) {
    /* File MRGFile = new File(rules.get(p).fileName);  
    FileUtils.copyFileToDirectory(MRGFile, AllMRGFolder);  */
        
    File MRGFile = new File("AllMRG/" + rules.get(p).fileName); 
    if (!MRGFile.exists()) {
        FileUtils.copyFileToDirectory(MRGFile, AllMRGFolder);
    }
}

第二次尝试:

String path = "AllMRG";
        for(Rule rule : rules) {
            File MRGFile = new File(rule.fileName);
            Files.copy(MRGFile.toPath(), (new File(path + MRGFile.getName())).toPath(), StandardCopyOption.REPLACE_EXISTING);
        }

PS:规则是一类

public class Rule implements Comparable{

    public String fileName;
    public String matches;
    public String TPinstances;
    public int nbrOfMatches;
    public double T;

    @Override
    public int compareTo(Object o) {
        if(o instanceof Rule){
            //processing to compare one Rule with another
        }
        return 0;
    }
}

这里是考虑了Shyam回答后的全部代码。同样的问题仍然存在!

Path directoryPath = Files.createDirectory(Paths.get("AllMGR"));
        for(Rule rule : rules) {
            
            Path filePath = directoryPath.resolve(rule.fileName);
            Files.createFile(filePath);
     
            File MRGFile = new File(rule.fileName);
            String ruleContent = new String(Files.readAllBytes(Paths.get(MRGFile.getPath())));
            String fileContent = new String(Files.readAllBytes(filePath));  
            fileContent=ruleContent;
            PrintWriter out13= new PrintWriter("AllMGR/"+rule.fileName+".xml");
            out13.print(fileContent);
            out13.close();
} 

1 个答案:

答案 0 :(得分:0)

首先,您要使用File创建一个新的rule.filename,而不给出任何预定义的路径。然后,您正在构建一个像path + MRGFile.getName()这样的路径,而没有任何路径分隔符,并尝试将文件复制到该位置。我认为这行不通。

实际上可以为您提供帮助的是,首先创建一个基本目录,然后在其中创建单个文件。

创建基本目录: Path directoryPath = Files.createDirectory(Paths.get("AllMGRDir"));

然后对于每个Rule对象,您都可以使用以下方法创建文件:

for(Rule rule : rules) {
      Path filePath = directoryPath.resolve(rule.fileName());
      Files.createFile(filePath);
// your remaining code
    }

resolve(String other)方法解析给定的路径。 Java文档说:

将给定的路径字符串转换为Path并对此进行解析 Path完全按照resolve(Path)方法指定的方式。 例如,假设名称分隔符为“ /”,并且路径 表示“ foo / bar” ,然后使用路径字符串调用此方法 “ gus”将导致Path “ foo / bar / gus”

希望这会有所帮助。