我有一个文本文件,其中每个奇数行包含一个整数(String ofcourse,因为它在文本文件中),甚至行都有时间。我只想读取数字,因此从文本文件中读取奇数行。我该怎么做?
import java.io.*;
public class File {
BufferedReader in;
String read;
int linenum =12;
public File(){
try {
in = new BufferedReader(new FileReader("MAP_allData.txt"));
for (linenum=0; linenum<20; linenum++){
read = in.readLine();
if(read==null){}
else{
System.out.println(read); }
}
in.close();
}catch(IOException e){ System.out.println("There was a problem:" + e);
}
}
public static void main(String[] args){
File File = new File();
}
}
截至目前,它将读取所有(奇数和偶数)行,直到没有更多内容(null)
由于我的偶数行是13:44:23
的时间戳,所以我可以执行类似
if(read == null或者如果读取包括a 时间或半冒号){} else { SOP(读);}
答案 0 :(得分:4)
读入所有行,并忽略所有其他行。
int lineNum = 0;
String line = null;
while ( (line = reader.readLine() ) != null ) {
lineNum++;
if ( lineNum % 2 == 0 ) continue;
//else deal with it
}
或者每次循环只调用readLine()
两次,忽略第二次,并避免使用计数器(因为所有对readLine的调用在到达流末尾后都返回null),所以安全。
修改如果效率绝对是关键且日期行采用固定长度格式,您可以使用skip(15)
或类似内容有效地跳过您不关心的行。< / p>
答案 1 :(得分:2)
当你在in.readLine ()
- 循环结束前放一个简单的for
时,会对此进行排序吗?
即:
for (linenum=0; linenum<20; linenum++) {
read = in.readLine();
if(read==null){}
else{
System.out.println(read);
}
in.readLine ();
}
答案 2 :(得分:0)
你已经有了一个linecounter,所以如果你想使用其他每一行,请使用模数检查
if((linenum % 2) == 1){
System.out.println(read);
}
答案 3 :(得分:0)
每次读一行都要执行类似的操作:
String str = read;
char[] all = str.toCharArray();
bool isInt = true;
for(int i = 0; i < all.length;i++) {
if(!Character.isDigit(all[i])) {
isInt = false;
}
else {
isInt = true;
}
}
if isInt {
//INTEGER LINE
} else {
//DO SOMETHING WITH THE TIME
}
这使代码动态化。如果文本文件发生变化,而整数出现在不同的编号行上,则代码可以保持不变。