2013-05-03 64 views
1

这就是我一直在阅读的文件,如果我有一个更大的列表,而不是一个小的购物清单,这种阅读文件的方式仍然是打开文件并从中获取信息的最有效方式它?可以说我没有购物清单,但也许是一个Excel文件?需要什么变化?从列表中读取文件

此购物清单可以如下(其.txt文件一)

Item Price Quantity 

Apple 2.99 2 

Orange 1.99 1 

Juice 4.99 3 

Chicken 9.99 1 

Milk 2.99 1 

代码:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class ReadingFiles{ 

public static void main(String[] args) throws FileNotFoundException { 

Scanner g = new Scanner(new File("groceries.txt")); 
double sum = 0; 

g.nextLine(); 

while (g.hasNext()) 
{ 
    String a = g.nextLine(); 

    String [] c = a.split(" "); 
    String item = c[0]; 
    double price = Double.parseDouble(c[1]); 
    int q = Integer.parseInt(c[2]); 

    if(!item.equals("Chicken")) 
    { 
     sum = sum +(price*q); 
    } 

} 

System.out.println("The total is: "+sum); 


} 

} 
+0

那么如果你有一个Excel文件,这将是一个二进制文件,你不能逐行阅读... – 2013-05-03 17:35:56

+0

我没有看到任何问题 - 你遇到了什么问题,或怀疑你会碰到? – Adrian 2013-05-03 17:35:58

+0

如果你想读取Excel文件,有库 – 2013-05-03 17:39:00

回答

1

如果你需要阅读的文件将是一个Excel文件,你可能想要使用存在的现有API之一来读取Java文件。最知名的选择是:

  • jExcelAPI这是相当轻巧,而且往往与大文件时消耗更少的内存,但仅限于阅读和写作的.xls(Excel 2003和更早版本)的文件。正如作者的网站似乎现在似乎,有一个很好的简短例子here,它显示了读取xls文件是多么容易。
  • Apache POI HSSF/XSSF,更复杂的选项,也可以处理.xlsx文件(Excel 2007及更高版本),但代价是更高的内存消耗和更难以学习的API。

一种很好的阅读结构化文本文件的方法我最近使用的是jsapar,它允许你像直接将文件解析到Java列表中。我并不是说它会比原始阅读更快,但它可能会非常有帮助。

2

我相信如果它是一个纯文本文件,你正在正确地阅读它。但是,如果你有一个Excel使用Apache POI,它提供了一些易于使用的API。下面是相同的参考网址:

http://viralpatel.net/blogs/java-read-write-excel-file-apache-poi/

如果你有控制或决定与你有关哪个文件,你可以用它来存储数据杂货店然后CSV也可以是一个不错的选择。这里是另一个链接,以帮助您CSV阅读:

http://viralpatel.net/blogs/java-read-write-csv-file/

明智的选择,希望它帮助!