【问题标题】:error during grouping files based on the date field根据日期字段对文件进行分组时出错
【发布时间】:2013-08-22 06:51:43
【问题描述】:

我有一个包含 10,000 行的大文件,每行末尾都附加了一个日期。一行中的所有字段都是制表符分隔的。有 10 个日期可用,这 10 个日期已随机分配给所有 10,000 行。我现在正在编写一个 java 代码,将所有具有相同日期的行写入一个单独的文件,其中每个文件都有与该日期对应的行。

我正在尝试使用字符串操作来执行此操作,但是当我尝试根据日期对行进行排序时,我在提及日期时遇到错误,并且错误表明 literal is out范围。这是我使用的代码。请看一下,让我知道这是否是正确的方法,如果不是,请提出更好的方法。我尝试将数据类型更改为 Long,但仍然是同样的错误。文件中的行如下所示: 每个字段都是制表符分隔的,字段是:

企业 ID、类别、城市、biz.name、经度、州、纬度、类型、日期

**

qarobAbxGSHI7ygf1f7a_Q [“三明治”,“餐厅”] 吉尔伯特泽西 迈克的潜艇 -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){ 

非常感谢您的宝贵时间..

【问题讨论】:

  • 06012010 - 这个数字以“0”开头 - 在 Java 中是八进制数。

标签: java string io


【解决方案1】:

试试这个,

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");
                    }
                }

【讨论】:

    【解决方案2】:

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

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

    无论如何,当我看到您只有 9 列时,您尝试使用 st[13]。可能你只需要st[8]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多