1

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

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

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

**

qarobAbxGSHI7ygf1f7a_Q [“三明治”,“餐厅”] Gilbert Jersey Mike's Subs -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){ 

非常感谢您的时间..

4

2 回答 2

0

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

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

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

最后一件事,看看这篇文章,了解 06012010 的真正含义

于 2013-08-22T06:57:10.477 回答
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");
                    }
                }
于 2013-08-22T07:08:37.760 回答