I am creating and writing to a file using the following pattern:
File afile = new File("C:/dev/ws/DataOrdering/data/" + thisDate
+ "_" + thisTime + "_visdata.csv");
FileWriter writer = new FileWriter(afile);
writer.append(tradeDetails);
writer.close();
However for some reason only the first file is written to, after that the files are created by they are empty - they would only be created if there was a record at the particular time, as the file names are based on times taken from the records. My complete method is printed below. (I have edited it to reflect the changes I made).
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();
}
}
}