如何读取整个文件并列出文件中的项目?

时间:2013-01-31 21:37:53

标签: java

我有一个看起来像这样的文本文件:

acorn squash 2365989335
alfalfa sprouts 3988549919
almond 9277904615
anchovy 3352461607
anise 0846115239
apple 7827295890
apricot 0662812477
artichoke 5974131818
asparagus 8485010646

继续开展另外几百项。列表中有项目名称,然后是紧邻它的UPC,然后是一个新行,它就像那样继续。

我应该阅读这个文件(foodUPC.txt)并将所有项目放入一个列表供以后使用。我被困在试图将所有这些项目放入列表中。之后,我必须阅读基于其UPC返回项目的所有项目。我也不知道该怎么做。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

BufferedReaderString.split(...)HashMap就是您想要的。我会让你把所有这3个放在一起。

答案 1 :(得分:2)

我认为NIO API对此非常方便,因为您可以轻松读取文件中的所有行(看到您的项目由换行符分隔):

List<String> lines = Files.readAllLines( Paths.get("foodUPC.txt"), Charset.forName( "MyCharset" ) /* or Charset.defaultCharset(), although this is not recommended for portable apps! */ );
for( String line : lines ) {
    String[] arr = line.split( " " );
    // here comes your code
}

问候。

答案 2 :(得分:0)

我会使用hashmap- upc代码是关键,值是名称

获取映射 - 使用正则表达式来分割行

InputStream    inputStream;
BufferedReader buffreader;

HashMap<String, String> hm= new HashMap<String,String>();

inputStream= new FileInputStream("foodUPC.txt");
buffreader= new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
while ((line = buffreader.readLine()) != null) {
   String[] datas=line.split(" ");[if its a tab use \t]
hm.put(datas[0],datas[1]);
}

在您需要的地方使用此地图。