Я создаю и записываю в файл, используя следующий шаблон:
File afile = new File("C:/dev/ws/DataOrdering/data/" + thisDate
+ "_" + thisTime + "_visdata.csv");
FileWriter writer = new FileWriter(afile);
writer.append(tradeDetails);
writer.close();
Однако по какой-то причине записывается только первый файл, после чего файлы создаются пустыми - они будут созданы только в том случае, если в конкретный момент времени была запись, так как имена файлов основаны на времени из записей. Мой полный метод напечатан ниже. (Я отредактировал его, чтобы отразить сделанные мной изменения).
public void createTimeFiles() throws IOException {
CSVReader reader = new CSVReader(new FileReader(
"C:/dev/ws/DataOrdering/data/visdata.csv"));
String[] nextLine;
String lastTime = "";
String code, date, hour, min, sec, offset, type, price, volume, bid, ask, headline;
HashMap<Integer, FileWriter> writers = new HashMap<Integer, FileWriter>();
while ((nextLine = reader.readNext()) != null) {
String thisDate = nextLine[1];
String thisTime = nextLine[2].substring(0, 5);
code = nextLine[0];
date = nextLine[1];
hour = nextLine[2].substring(0, 2);
min = nextLine[2].substring(3, 5);
sec = nextLine[2].substring(6);
offset = nextLine[3];
type = nextLine[4];
price = nextLine[5];
volume = nextLine[6];
bid = nextLine[7];
ask = nextLine[7];
headline = nextLine[7];
// System.out.println(thisDate + " - " + thisTime + " - " + hour
// + " - " + min);
String tradeDetails = code + " _ " + date + " _ " + hour + " _ "
+ min + " _ " + sec + " _ " + offset + " _ " + type + " _ "
+ price + " _ " + volume + " _ " + bid + " _ " + ask
+ " _ " + headline;
File afile = new File("C:/dev/ws/DataOrdering/data/" + thisDate
+ "_" + thisTime + "_visdata.csv");
if (afile.exists()) {
FileWriter writer = new FileWriter(afile);
writer.append(tradeDetails);
writer.close();
} else {
System.out.println("the file exists");
FileWriter writer = new FileWriter(afile);
writer.write(tradeDetails);
writer.close();
}
}
}