Java 如何将数据从txt文件复制到数组

Java 如何将数据从txt文件复制到数组,java,arrays,file-io,line,Java,Arrays,File Io,Line,我正在做一个项目,需要我把txt文件中的所有信息复制到数组中。txt的内容如下所示。这里我想要的是,我想要分别将所有商品名称和描述抓取到它的数组中 GoodTitle Description Gold The shiny stuff Wheat What wheaties are made of Wood To make more ships Spices To disguise the taste o

我正在做一个项目,需要我把txt文件中的所有信息复制到数组中。txt的内容如下所示。这里我想要的是,我想要分别将所有商品名称和描述抓取到它的数组中

GoodTitle        Description            
    Gold       The shiny stuff
    Wheat   What wheaties are made of
    Wood    To make more ships
    Spices  To disguise the taste of rotten food
    Tobacco Smoko time
    Coal    To make them steam ships go
    Coffee  Wakes you up
    Tea Calms you down
到目前为止我所做的:

public void openFile()
    {
        ArrayList <String> ShippingTokens = new ArrayList<String>();
        try{
            FileInputStream fstream = new FileInputStream("D://Shipping.txt");
            // Use DataInputStream to read binary NOT text.
                    BufferedReader br = new BufferedReader (new InputStreamReader (fstream));
            String strline;
            while ((strline = br.readLine()) != null){ 
                strline = strline.trim();

            if ((strline.length()!=0)) {
                String[] Shippings = strline.split("//s+");
                ShippingTokens.add(Shippings[TOKEN_COLUMN]);
            }

        }

        for (String s : ShippingTokens) {
            System.out.println(s);
        }

        in.close();
        } catch (Exception e){
            System.err.println("Error");
        }

    }
public void openFile()
{
ArrayList ShippingTokens=新ArrayList();
试一试{
FileInputStream fstream=新的FileInputStream(“D://Shipping.txt”);
//使用DataInputStream读取二进制而不是文本。
BufferedReader br=新的BufferedReader(新的InputStreamReader(fstream));
弦斯特林;
而((strline=br.readLine())!=null){
strline=strline.trim();
如果((strline.length()!=0)){
字符串[]Shippings=strline.split(“//s+”);
添加(Shippings[TOKEN_列]);
}
}
for(字符串s:ShippingTokens){
系统输出打印项次;
}
in.close();
}捕获(例外e){
System.err.println(“错误”);
}
}

首先,JavaSE7确实简化了文件处理,所以我建议您使用它

try(BufferedReader reader = Files.newBufferedReader(Paths.get("D://Shipping.txt"), StandardCharsets.UTF_8)) { 
    List<String> lines = Files.readAllLines(reader, StandardCharsets.UTF_8);
    for(String line : lines) {
         String[] shipping = line.split("//s+");
         //now do whatever you want with the values
    }
}
try(BufferedReader=Files.newBufferedReader(path.get(“D://Shipping.txt”)、StandardCharsets.UTF_8)){
列表行=Files.readAllLines(reader,StandardCharsets.UTF_8);
用于(字符串行:行){
字符串[]shipping=line.split(“//s+”);
//现在用这些值做任何你想做的事情
}
}

请确保在类中定义了TOKEN\u列

 ShippingTokens.add(Shippings[TOKEN_COLUMN]);
如果
TOKEN\u列值为0
,则输出如下

GoodTitle   
Gold
Wheat
Wood
Spices
Tobacco
Coal
Coffee
Tea

一种可能的解决方案是首先读取字符串的第一个字,并将其存储在数组中。然后,您可能希望存储该行的其余部分,这可以通过各种方式完成。一种可能的解决方案是读取整行内容,将第一个单词存储为GoodTitle,删除第一个单词并将字符串的其余部分存储为描述,我不太确定BufferedReader在Java中是如何工作的

<>你可能想考虑使用扫描仪来代替。

它与next()和nextLine()等方法一起提供,这可能会简化您的解决方案


是否确实要将其存储在数组中?将信息存储在以GoodTitle为键的HashMap中可能更有意义。

您对此有何疑问??