基于日期字段对文件进行分组时出错

时间:2013-08-22 06:51:44

标签: java string io

我有一个大文件,有10,000行,每行最后都有一个日期。连续的所有字段都是制表符分隔的。有10个可用日期,这10个日期随机分配给所有10,000行。我现在正在编写一个java代码,将具有相同日期的所有行写入一个单独的文件中,其中每个文件都具有该日期的相应行。

我正在尝试使用字符串操作,但是当我尝试根据日期对行进行排序时,我在提及日期时收到错误,而错误显示 文字不在范围 即可。这是我使用的代码。请看看它,如果这是正确的方法让我知道,如果没有,请提出更好的方法。我尝试将数据类型更改为Long,但仍然是相同的错误。文件中的行看起来像这样: 每个字段都以制表符分隔,字段为:

商家ID,类别,城市,商业名称,经度,州,纬度,类型,日期

**

  

qarobAbxGSHI7ygf1f7a_Q [“Sandwiches”,“餐厅”] Gilbert Jersey   迈克的子公司-111.8120071 AZ 3.5 33.3788385业务06012010

** 代码是:

    File f=new File(fn);
    if(f.exists() && f.length()>0)
    {
    BufferedReader br=new BufferedReader(new FileReader(fn));
    BufferedWriter bw = new BufferedWriter(new FileWriter("FilteredDate.txt"));

        String s=null;
        while((s=br.readLine())!=null){
            String[] st=s.split("\t");

            if(Integer.parseInt(st[13])==06012010){ 

非常感谢您的时间..

2 个答案:

答案 0 :(得分:0)

我建议不要使用拆分,而是使用

String str = s.subtring(s.lastIndexOf('\t'));

在任何情况下,当我看到你只有9列时,你会尝试st[13]。可能你只需要st[8]

最后一件事,请看this帖子,了解06012010的真正含义

答案 1 :(得分:0)

试试这个,

List<String> sampleList = new ArrayList<String>();
        sampleList.add("06012012");
        sampleList.add("06012013");
        sampleList.add("06012014");
        sampleList.add("06012015");

//

//

    String[] sampleArray = s.split(" ");
                if (sampleArray != null)
                {
                    String sample = sampleArray[sampleArray.length - 1];

                    if (sampleList.contains(sample))
                    {
                        stringBuilder.append(sample + "\n");
                    }
                }