我有一个大文件,有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){
非常感谢您的时间..
答案 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");
}
}