I need to check a filename contain any date or number in its name and if it contain to change the name accordingly.
Example 1
JavaScript
x
phd_20001_pat_apr.txt.gz
In above example filename contain 20001. So i want to change it accordingly-
JavaScript
phd_*_pat_apr*
example2
JavaScript
phd_pat_mnc.txt.gz
In above example no date or number present in filename. So it won’t be change.
Could you please tell me what are the changes I do in the below code to get the desirable output-
filename
& source_file_nm
are header.
JavaScript
if ( (((java.util.List<String>)globalMap.get("filename")).get(i)).contains("enc_prov") )
{
globalMap.put("source_file_nm",(((java.util.List<String>)globalMap.get("filename")).get(i)).substring(0,(((java.util.List<String>)globalMap.get("filename")).get(i)).lastIndexOf("_")+2));
}
Advertisement
Answer
You can use regex for that
JavaScript
String filenamePattern = "phd_[0-9]+_.*"
try (Stream<Path> stream = Files.find(folder,
Integer.MAX_VALUE,
(path,
basicFileAttributes) -> path.toFile().getName().matches(filenamePattern))) {
return stream.collect(Collectors.toList());
}
This will return a List of all files matching filenamePattern. Change the [maxDepth the maximum number of directory levels to search] on files.find accordingly.