Чтение в файле данных (TXT) в переменные Java - PullRequest
0 голосов
/ 31 октября 2018

У меня есть файл данных "inventory.dat" со следующим содержимым:

Item ID             |Item Name                               |Item Description                                                                                    |Weight       |Quantity      |Price       |Isle                |Bin
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BK1012923           |#8 x 1" Wood Screws (Qty 8)             |#8 x 1" Wood Screws (Qty 8) - Plastic bag                                                           |0.04         |144           |0.65        |Isle-N23            |Bin-N23-14-3
BK1022344           |#8 x 1" Wood Screws (Qty 8)             |#8 x 1 1/2" Wood Screws (Qty 8) - Plastic bag                                                       |0.06         |144           |0.65        |Isle-N23            |Bin-N23-14-3
BK1022344           |#8 x 1" Wood Screws (Qty 8)             |#8 x 1 1/2" Wood Screws (Qty 8) - Plastic bag                                                       |0.06         |50            |0.65        |Isle-S18            |Bin-S18-01-2

Summary: 338 items   Total Value: $219.70

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

Сводку и общую стоимость следует игнорировать.

import java.io.*;
import java.util.*;
/**
 * 
 *
 */
public class FileRead {
    public static void main (String[] argv) {
        BufferedReader reader;
        String line;
        String data;
        ArrayList<String> itemID = new ArrayList<String>();
        ArrayList<String> itemName = new ArrayList<String>();
        ArrayList<String> itemDesc = new ArrayList<String>();
        ArrayList<String> weight = new ArrayList<String>();
        ArrayList<Integer> quant = new ArrayList<Integer>();
        ArrayList<Float> price = new ArrayList<Float>();
        ArrayList<String> aisle = new ArrayList<String>();
        ArrayList<String> bin = new ArrayList<String>();

        try {
            reader = new BufferedReader(new FileReader("resources/inventory.dat"));

            while ((line = reader.readLine() != null)) {
                //
            }
        }
        catch (IOException e)
        {
            System.err.println(e);
        }

    }
}

1 Ответ

0 голосов
/ 31 октября 2018

Это один из способов сделать это. Я использовал line.split("\\|"), чтобы разделить строку с | в качестве разделителя. А поскольку в файле «Сводка» и «Итого» в файле есть пустая строка, вы можете разорвать цикл, используя if(line.isEmpty())

    try {
        reader = new BufferedReader(new FileReader("resources/inventory.dat"));
        //ignore first two lines
        line = reader.readLine(); //read first line
        line = reader.readLine(); //read second line

        line = reader.readLine(); //read third line
        while (line != null){

            if(line.isEmpty())
                break;

            String [] l  = line.split("\\|"); //Split the lines

            //Add data
            itemID.add(l[0]);
            itemName.add(l[1]);
            itemDesc.add(l[2]);
            weight.add(l[3]);
            quant.add(Integer.parseInt(l[4].trim()));
            price.add(Float.parseFloat(l[5].trim()));
            aisle.add(l[6]);
            bin.add(l[7]);

            line = reader.readLine();

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...