Как добавить к одной строке дважды в выходной файл CSV с Java? - PullRequest
0 голосов
/ 17 апреля 2020

Я решаю последнюю ошибку в моем приложении, связанную с выводом в мой файл CSV. Мое приложение запускается два раза в день с отметками времени и двумя различными значениями. Проблема заключается в том, что при запуске приложения доступно только одно из этих двух значений. Поэтому мне нужно иметь возможность распечатывать одну строку в CSV каждый день, где в первый раз ставится дата, печатается 1-е значение, а 2-е значение печатается как #Empty (или оставляется пустым). Затем при втором запуске время и 1-е значение пропускаются, а 2-е значение перезаписывается на новое значение.

Вот изображение, показывающее, что у меня есть и что я хочу:

У меня есть:

enter image description here

I want:

enter image description here

Вот метод, который я использую для генерации тела таблицы данных (заголовки в порядке). Я добавил комментарии к строке, чтобы уточнить мои функции как можно лучше:

//Put into proper array based on when data was pulled
public void createCSV() throws IOException {
    makeCSV(); //Method call to build file
    EST est = new EST(); 
    est.getEST(); //Method call to get current time in EST
    //Fill in value at market open
    if(est.marketOpen == true) { //Flag to see which column the parsed data (single value) should be
        o_value = stock;
        c_value = "#Empty";
    }
    //Fill in value at market close
    else if (est.marketClose == true){
        o_value = "#Empty";
        c_value = stock;
    }

    //Import arrays
    est.getDate(); //est.getDate() pulls the date stamp for today's date
    Scanner scanner = new Scanner(fid); //fid is the name of the file

    //File should always have next line due to written headers
    //Ensure date is only printed on 1 line
    while(scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if(!line.contains(est.dx)) { //est.dx is the string form of today's date stamp
            Files.write(path, est.dx.getBytes(), StandardOpenOption.APPEND);
            Files.write(path, ",".getBytes(), StandardOpenOption.APPEND);
        }
        else{
            Files.write(path, "\n".getBytes(), StandardOpenOption.APPEND);
        }
    }

    //Handle commas in stock values
    String input1 = appendDQ(o_value);
    String input2 = appendDQ(c_value);

    //Don't write empty to data file for open data
    //If program is on schedule, can't have close data without open data
    if(!input1.equals("#Empty")) {
        Files.write(path, input1.getBytes(), StandardOpenOption.APPEND);
        Files.write(path, ",".getBytes(), StandardOpenOption.APPEND);
        Files.write(path, input2.getBytes(), StandardOpenOption.APPEND);
    }
    else {

    }

    while(scanner.hasNextLine()) {
        String line = scanner.nextLine();
        String parser = "#Empty";
        if(line.contains(parser) && input2 != parser ) {
            Files.write(path, input2.getBytes(), StandardOpenOption.APPEND);
            Files.write(path, "\n".getBytes(), StandardOpenOption.APPEND);
        }
    }
    scanner.close();
    System.out.println("Stock data sucessfully written to file.");
}
...