我正在做一个项目,要求我将所有信息从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");
}
}
答案 0 :(得分:1)
首先,Java SE 7真正简化了文件的处理,所以我建议你使用它。
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
}
}
答案 1 :(得分:0)
请确保您在课堂上定义了TOKEN_COLUMN。
ShippingTokens.add(Shippings[TOKEN_COLUMN]);
如果您的TOKEN_COLUMN value is 0
,那么您的输出将如下所示。
GoodTitle
Gold
Wheat
Wood
Spices
Tobacco
Coal
Coffee
Tea
答案 2 :(得分:0)
一种可能的解决方案是首先读取字符串的第一个单词,然后将其存储在数组中。然后你可能想要存储剩余的线,这可以通过各种方式完成。一种可能的解决方案是读取整行,将第一个单词存储为GoodTitle,删除第一个单词并将其余字符串存储为描述,我不太确定BufferedReaders如何在Java中工作。
您可能需要考虑使用扫描仪。 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
其中包括next()和nextLine()等方法,这可能会简化您的解决方案。
您确定要将其存储在数组中吗?将信息存储在以GoodTitle为关键字的HashMap中可能更有意义。