public static void main(String[] args) {
String ShablonCurrentLine; //Переменные в Java пишуться с маленькой буквы.
String DataCurrentLine; // Незачем объявлять переменную до ее использования.
String pathReadShablon = "...\\Shablon.csv"; // "Шаблон", по английски, будет "template". pathReadShablon - колхозное имя.
String pathReadData = "...\\data.csv";
try {
BufferedReader br = new BufferedReader(new FileReader(pathReadShablon)); // Используйте try-with-resources
ShablonCurrentLine = br.readLine();
String[] titleShablonLine = ShablonCurrentLine.split(";");
BufferedReader br1 = new BufferedReader(new FileReader(pathReadData)); //почему br и br1 ? Как понять чем они отличаются?
while((DataCurrentLine = br1.readLine()) != null){
String[] arrLineData = DataCurrentLine.split(",");
String path = "C:\\..." + arrLineData[0] + ".csv";
PrintWriter printWriter = new PrintWriter(path);
for (int i = 0; i < titleShablonLine.length; i++) {
printWriter.print(titleShablonLine[i] + ";");
}
printWriter.println();
while((ShablonCurrentLine = br.readLine()) != null) { // Одна и таже переменная, но используется в разных местах? О_о
String[] arrLineShablon = ShablonCurrentLine.split(";"); // Вот тут какая длина у массива?
for (int i = 0; i < arrLineShablon.length; i++) {
arrLineShablon[i] = arrLineShablon[i].replaceAll("\\{\\{ station_code }}", arrLineData[1]);
arrLineShablon[i] = arrLineShablon[i].replaceAll("\\{\\{ station_ip_addr }}", arrLineData[2]);
arrLineShablon[i] = arrLineShablon[i].replaceAll("\\{\\{ camera_code }}", arrLineData[0]);
arrLineShablon[i] = arrLineShablon[i].replaceAll("\\{\\{ camera_ip_addr }}", arrLineData[3]);
}
for (int i = 0; i < arrLineShablon.length; i++) {
printWriter.print(arrLineShablon[i] + ";");// Зачем второй цикл? Почему не сделать все в предыдущем?..
}
printWriter.println();
}
printWriter.close();
}
br.close();
br1.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public class ParallelMapDemo2 {
public static void main(String[] args) throws InterruptedException {
var inputSet1 = Set.of("a", "b", "c");
var inputSet2 = Set.of("e", "f", "g");
var result = new ConcurrentHashMap<String, String>();
new Thread(new Worker(inputSet1, result)).start(); // Так делать не надо. Это только для примера.
new Thread(new Worker(inputSet2, result)).start();
Thread.sleep(1000);
System.out.println(result);
}
static class Worker implements Runnable {
private Set<String> task;
private Map<String, String> outputMap;
public Worker(Set<String> task, Map<String, String> outputMap) {
this.task = task;
this.outputMap = outputMap;
}
@Override
public void run() {
for (var s: task) { // так тоже, конечно, никто не пишет
// Do something
outputMap.put(s, s.toUpperCase());
}
}
}
}