将数据文件(txt)读入java变量

将数据文件(txt)读入java变量,java,io,Java,Io,我有一个包含以下内容的数据文件“inventory.dat”: Item ID |Item Name |Item Description |Weight |Quantity |Price |Isle

我有一个包含以下内容的数据文件“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
我希望能够将每一条数据读入单独的变量中,这些变量包括项目ID、项目名称、项目描述、重量、数量、价格、Isle和Bin。我将如何使用
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);
        }

    }
}
import java.io.*;
导入java.util.*;
/**
* 
*
*/
公共类文件读取{
公共静态void main(字符串[]argv){
缓冲读取器;
弦线;
字符串数据;
ArrayList itemID=新的ArrayList();
ArrayList itemName=新的ArrayList();
ArrayList itemDesc=新的ArrayList();
ArrayList权重=新建ArrayList();
ArrayList quant=新的ArrayList();
ArrayList价格=新的ArrayList();
ArrayList通道=新建ArrayList();
ArrayList bin=新的ArrayList();
试一试{
reader=new BufferedReader(新文件读取器(“resources/inventory.dat”);
而((line=reader.readLine()!=null)){
//
}
}
捕获(IOE异常)
{
系统错误println(e);
}
}
}

这是一种方法。我使用了
line.split(\\\\;”)
作为分隔符来分割行。由于Summary和Total之前的文件中有一个空行,因此可以使用
if(line.isEmpty())


您可以通过读取文件并解析数据来获取所需内容。到目前为止,您尝试了什么?请在文件中尝试阅读的地方发布代码,我们可以帮助您解决具体问题。刚刚发布。只是不确定在循环中要做什么为了帮助您启动,
line.split(“|”)
将在每个|处拆分该行,并为您提供一个
String
s.for
quant.add(Integer.parseInt(l[4].trim())数组它运行到一个数字格式异常,因为它在“144”中读取,在int@vnguyen56
.trim()
删除这些空格。这对我很管用。您应该检查什么是
l[4]
以查看问题。
    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();

        }
    }