Я написал метод, на вход которого приходит путь к папке, где лежат файлы, имена которых будем сравнивать с ключами HashMap, а так же массив имен самих этих файлов. Я проверяю, содержит ли имя файла значение ключа HashMap, если да, то копирую файл по пути заданному соотвествующему ключу в hashmap. Результат меня не устраивает, т.к. имя файла я сравниваю с каждым из ключей, сооветственно я получаю одну строчку совпадения и десяток строк не совпадений, и так для каждого имени файла. В итоге отсеивать несовпадающие файлы в специальную папку нет возможности. Можете помочь подредактировать метод, чтобы несовпадающие ни с одним значением ключей HashMap отправлялись в другую папку.
public void foldersArray(String sourceFolder, File[] filelist) {
String key = null;
Map<String, String> foldersForPRT = new HashMap<String, String>();
foldersForPRT.put("111.00.000", "D:\\test\\111.00.000");
foldersForPRT.put("222.00.000", "D:\\test\\222.00.000");
foldersForPRT.put("333.00.000", "D:\\test\\333.00.000");
for (File file1 : filelist) {
for (int i = 0; i < foldersForPRT.keySet().toArray().length; i++) {
key = foldersForPRT.keySet().toArray()[i].toString();
destinationFolder = new File(foldersForPRT.values().toArray()[i].toString());
prtFiles = new File(sourceFolder + File.separator + file1.getName());
if (file1.getName().contains(key)) {
System.out.println("Совпадение! " + file1.getName() + " " + key);
try {
FileUtils.copyFileToDirectory(prtFiles, destinationFolder); // копируем
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Не совпало! ");
destinationFolder = new File("D:\\test\\unsorted");
try {
FileUtils.copyFileToDirectory(prtFiles, destinationFolder);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Попробуйте сначала сформировать список файлов для копирования, а уже потом , исходя из этого списка, выполнять копирование. Что-то вроде этого...
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;
public class Test {
public void foldersArray(String sourceFolder, File[] filelist) {
Map<String, String> foldersForPRT = new HashMap<>();
foldersForPRT.put("111.00.000", "D:\\test\\111.00.000");
foldersForPRT.put("222.00.000", "D:\\test\\222.00.000");
foldersForPRT.put("333.00.000", "D:\\test\\333.00.000");
final Map<Integer, String> fileNumber = new HashMap<>();
for (int i = 0; i < filelist.length; i++) {
for (String key : foldersForPRT.keySet()) {
if (filelist[i].getName().contains(key)) fileNumber.put(i, foldersForPRT.get(key));
break;
}
}
for (int i = 0; i < filelist.length; i++) {
String source = sourceFolder + File.separator + filelist[i].getName();
if (fileNumber.containsKey(i)) {
System.out.println("Совпадение! " + filelist[i].getName());
fileCopy(source, fileNumber.get(i));
} else {
System.out.println("Не совпало!");
fileCopy(source, "D:\\test\\unsorted");
}
}
}
private boolean fileCopy(String source, String destination) {
try {
Files.copy(Paths.get(source), Paths.get(destination), StandardCopyOption.REPLACE_EXISTING);// копируем
return true;
} catch (IOException e) {
return false;
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Каждые два секунд , я получаю данные с сайта заношу их в бд и мне нужно сделать rest запрос по DateЯ сделал rest запрос по всем данным