Java 如何根据名称长度删除文件
我有一个后缀相同的文件列表,文件名包含日期和文件类型,如下所示:year-month-day\u filetype。。除了其中一个不包含day year-month_文件类型之外。。我需要删除一个不包含日期的。。请帮忙。。非常感谢Java 如何根据名称长度删除文件,java,Java,我有一个后缀相同的文件列表,文件名包含日期和文件类型,如下所示:year-month-day\u filetype。。除了其中一个不包含day year-month_文件类型之外。。我需要删除一个不包含日期的。。请帮忙。。非常感谢 private void scanFolder(final String fileTypename, File currentFolder, File outputFolder) { System.out.println("Scanning folder ["
private void scanFolder(final String fileTypename, File currentFolder, File outputFolder) {
System.out.println("Scanning folder [" + currentFolder + "]...");
File[] files = currentFolder.listFiles(filter);
for (File file : files) {
if (file.isDirectory()) {
scanFolder(fileTypename, file, outputFolder);
} else {
copy(file, outputFolder);
}
}
for (File f : outputFolder.listFiles()) {
if (f.getName().contains("CW")) {
f.delete();
}
System.out.println("Processing " + outputFolder.listFiles() + " Deleted ... ");
}
}
因此,您需要一个函数来检查您的字符串是否是您期望的格式,但错过了日期。这应该能奏效
private boolean missingDay(String filename){
boolean result = false;
String[] parts = filename.split("_",3);
if (parts.length == 3){
String[] dateParts = parts[1].split("-",3);
if (dateParts.length<3){
result = true;
}
}
return result;
}
你的头衔与你的目标不符。基于名称长度删除文件和基于缺少日期删除文件不是一回事。感谢您回答我的问题,我想删除缺少日期的文件。。通常情况下,如果名称缺少日期,它将是列表中最短的一个,因此我们可以按名称的长度删除,如果名称缺少日期更好,我们可以按名称的长度删除,谢谢。一种方法是在下划线上拆分文件名,拆分元素1(如果存在),注意不要在-,上查看数组的结尾以外,然后看看您是否有3个条目或更少。是的,但是如果您有一个新类型的文件恰好有一个较短的名称,会发生什么情况?基于长度的删除容易出现错误,并且不具有可伸缩性,基于某些参数(如缺少日期)的删除更有可能适用于更多情况,并且不会错误地删除文件。决定哪一个更适合您的项目。再次感谢,如果我可以在缺少日期之前删除文件,对我的项目将更好
if (f.getName().contains("CW") || missingDay(f.getName())
private void scanFolder(final String fileTypename, File currentFolder, File outputFolder){
System.out.println("Scanning folder [" + currentFolder + "]...");
File[] files = currentFolder.listFiles(filter);
for (File file : files) {
if (file.isDirectory()) {
scanFolder(fileTypename, file, outputFolder);
}else {
copy(file, outputFolder);
}
}
for (File f : outputFolder.listFiles())
{
if (f.getName().contains("CW") || missingDay(f.getName())){
f.delete();}
System.out.println("Processing " + outputFolder.listFiles() + " Deleted ... ");
}
}
private boolean missingDay(String filename){
boolean result = false;
String[] parts = filename.split("_",3);
if (parts.length == 3){
String[] dateParts = parts[1].split("-",3);
if (dateParts.length<3){
result = true;
}
}
return result;
}