Почему ничего не записывается в файл? - PullRequest
0 голосов
/ 21 сентября 2009

Я создаю и записываю в файл, используя следующий шаблон:

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();
        }

    }
}

Ответы [ 4 ]

2 голосов
/ 21 сентября 2009

Файл существует? Вы добавляете, а не пишете ....

1 голос
/ 21 сентября 2009

Отметьте "!"

            if (!afile.exists()) { // here
                    System.out.println("the file exists");
                    FileWriter writer = new FileWriter(afile);
                    writer.append(tradeDetails);
                    writer.close();
            } else {
                    FileWriter writer = new FileWriter(afile);
                    writer.append(tradeDetails);
                    writer.close();
            }

Почему ты делаешь два раза одно и то же ?? Если файл не существует Вы должны написать, а не добавить.

Возможно также, что папка не существует.

aFile.getParentFile().mkdirs();

Если родительская папка уже существует, проблем нет.

0 голосов
/ 21 сентября 2009

Вызов

writer.flush();

перед звонком

writer.close();
0 голосов
/ 21 сентября 2009

Возможно, visdata.csv не существует или не содержит данных, поэтому ничего не будет записано.

C:/dev/ws/DataOrdering/data/visdata.csv существует?

...