为什么没有写入文件?

时间:2009-09-21 15:57:09

标签: java file-io filewriter

我正在使用以下模式创建和写入文件:

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 个答案:

答案 0 :(得分:2)

文件是否存在?你是附加的,而不是写作......

答案 1 :(得分: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();
            }

为什么你做两次相同的?如果该文件不存在。你必须写,而不是追加。

文件夹也可能不存在。

aFile.getParentFile().mkdirs();

如果父文件夹已存在,则没有问题。

答案 2 :(得分:0)

也许visdata.csv不存在或者不包含任何数据,因此不会写任何内容。

C:/dev/ws/DataOrdering/data/visdata.csv是否存在?

答案 3 :(得分:0)

呼叫

writer.flush();

之前打电话

writer.close();