-1

次のパターンを使用してファイルを作成および書き込みています。

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

4 に答える 4

2

ファイルは存在しますか?あなたは追加しているのであって、書いているのではありません。

于 2009-09-21T15:59:34.313 に答える
1

!あなたの「 」をチェックしてください

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

なぜあなたは同じことを2回するのですか?ファイルが存在しない場合。追加するのではなく、書く必要があります。

フォルダが存在しない可能性もあります。

aFile.getParentFile().mkdirs();

親フォルダがすでに存在する場合は問題ありません。

于 2009-09-21T16:00:51.127 に答える
0

visdata.csvが存在しないか、データが含まれていない可能性があるため、何も書き込まれません。

C:/dev/ws/DataOrdering/data/visdata.csv存在しますか?

于 2009-09-21T15:59:26.153 に答える
0

電話

writer.flush();

電話する前に

writer.close();
于 2009-09-21T16:08:09.840 に答える