gpt4 book ai didi

java - Groovy/Java - 复制路径中带有括号的文件时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:39 26 4
gpt4 key购买 nike

我目前有一个脚本,可以通过正则表达式包含和排除将文件从源目录复制到目标目录,但是当路径包含括号时,文件将不会复制。

我最初的想法是,问题在于如何读取源和目标,因为 ( 是一个特殊字符,为了解决这个问题,我尝试用转义的 ( 替换 (,但我可能一直做错了这部分。

import groovy.io.FileType
import java.nio.file.*

String Source = 'C:/temp/file(s)'
String Target = 'C:/newTemp/file(s)'

String InclusionsRegexes = "garbage.txt"

String ExclusionsRegexes = ""

class RegexInfo
{
private String AllRegexes = "";

public RegexInfo(String RegexString, String RegexType, String Source)
{
if(RegexString != null)
{
def RegexArray = RegexString.split(",");

for(item in RegexArray)
{
String fullRegexPath = Source + "/" + item;

if(AllRegexes != null && !AllRegexes.isAllWhitespace())
{
//Add regex value for Or
AllRegexes += "|";
}
AllRegexes += fullRegexPath;
}
}
}
public String getAllRegexes() { return this.AllRegexes; }
}

IncludesRegexInfo = new RegexInfo(InclusionsRegexes, "inclusion", Source);
ExcludesRegexInfo = new RegexInfo(ExclusionsRegexes, "exclusion", Source);

File SourceDirToCopy = new File(Source);

SourceDirToCopy.eachFileRecurse()
{
SourceFile ->

String SourceFilePath = SourceFile.toString().replaceAll("\\\\","/");

if(SourceFile.isDirectory())
{
SourceFilePath += "/"
}

if(SourceFilePath.matches(IncludesRegexInfo.getAllRegexes()) && !SourceFilePath.matches(ExcludesRegexInfo.getAllRegexes()))
{
File TargetFile = new File(SourceFilePath.replace(Source, Target))
String TargetFilePath = TargetFile.toString().replaceAll("\\\\", "/");

if(!TargetFile.getParentFile().exists())
{
TargetFile.getParentFile().mkdirs()
}
Files.copy(SourceFile.toPath(), TargetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
}

我收到的错误要么是意外字符,要么文件移动时没有出现错误。

最佳答案

为了解决脚本不复制的问题,在“匹配”两个字符串时,if(SourceFilePath.matches(InincludesRegexInfo.getAllRegexes() && !SourceFilePath.matches(ExcludesRegexInfo.getAllRegexes())))出现了问题。

字符串读取为相同的行,但在正则表达式方面不匹配。要解决此问题,您必须转义 ExcludesRegexInfo.getAllRegexes() 中的 ()。这是通过 .replaceAll("\\(","\\\\(").replaceAll("\\)","\\\\)")

完成的

关于java - Groovy/Java - 复制路径中带有括号的文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com