Java: чтение файла CSV и запись

Я читаю 2 файла CSV: store_inventory & new_acquisitions.
Я хочу смочь выдержать сравнение store_inventory файл CSV с new_acquisitions. 1) Если соответствие названий товара просто обновляет количество в store_inventory. 2) Если new_acquisitions имеет новый объект, который не существует в store_inventory, затем добавьте его к store_inventory.

Вот то, что я сделал до сих пор, но его не очень хорошее. Я добавил комментарии, где я должен добавить гвозди 1 и 2.
Любой совет или код, чтобы сделать вышеупомянутые задачи были бы большими!спасибо.

    File new_acq = new File("/src/test/new_acquisitions.csv");
    Scanner acq_scan = null;
    try {
        acq_scan = new Scanner(new_acq);
    } catch (FileNotFoundException ex) {
        Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
    }
    String itemName;
    int quantity;
    Double cost;
    Double price;

    File store_inv = new File("/src/test/store_inventory.csv");
    Scanner invscan = null;
    try {
        invscan = new Scanner(store_inv);
    } catch (FileNotFoundException ex) {
        Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
    }
    String itemNameInv;
    int quantityInv;
    Double costInv;
    Double priceInv;


    while (acq_scan.hasNext()) {
        String line = acq_scan.nextLine();
        if (line.charAt(0) == '#') {
            continue;
        }
        String[] split = line.split(",");

        itemName = split[0];
        quantity = Integer.parseInt(split[1]);
        cost = Double.parseDouble(split[2]);
        price = Double.parseDouble(split[3]);


        while(invscan.hasNext()) {
            String line2 = invscan.nextLine();
            if (line2.charAt(0) == '#') {
                continue;
            }
            String[] split2 = line2.split(",");

            itemNameInv = split2[0];
            quantityInv = Integer.parseInt(split2[1]);
            costInv = Double.parseDouble(split2[2]);
            priceInv = Double.parseDouble(split2[3]);


            if(itemName == itemNameInv) {
                //update quantity

            }
        }
        //add new entry into csv file

     }

Еще раз спасибо за любую справку. =]

5
задан S1LENT WARRIOR 22 February 2013 в 08:45
поделиться

2 ответа

Предложите использовать один из существующих парсеров CSV, например Commons CSV или Super CSV, вместо того, чтобы изобретать колесо. Это значительно облегчит вам жизнь.

5
ответ дан 13 December 2019 в 05:31
поделиться

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

Я бы посоветовал вам добавить свои новые приобретения и свой инвентарь в коллекции, а затем перебрать свои новые приобретения и найти новый элемент в своей коллекции инвентаря. Если элемент существует, обновите его. Если это не так, добавьте его в коллекцию инвентаря. Для этого действия было бы неплохо написать простой класс, содержащий элемент инвентаря. Его можно было использовать как для новых поступлений, так и для инвентаризации. Для быстрого поиска я бы посоветовал вам использовать HashSet или HashMap для вашей коллекции инвентаря.

В конце процесса не забудьте сохранить изменения в файле инвентаря.

1
ответ дан 13 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: