[英]How to read odd number of lines from a text file using Java?
我有一个文本文件,其中每条奇数行都包含一个整数(因为它在文本文件中,所以为字符串),偶数行都有时间。 我只想读取数字,因此要读取文本文件中的奇数行。 我怎么做?
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();
}
}
截至目前,它将读取所有(奇数和偶数)行,直到不再需要读取(空)为止
由于我的偶数行是13:44:23
这样的时间戳,所以我可以做类似
if(read == null或如果read包含时间或分号){} else {SOP(read);}
阅读所有行,而忽略其他所有行。
int lineNum = 0;
String line = null;
while ( (line = reader.readLine() ) != null ) {
lineNum++;
if ( lineNum % 2 == 0 ) continue;
//else deal with it
}
或每个循环仅两次调用readLine()
,而无需第二次,并避免使用计数器(这是安全的,因为所有到达readStream的调用在到达流末尾后都将返回null)。
编辑如果效率绝对是关键,并且日期行具有固定长度的格式,则可以使用skip(15)
或类似的方法来有效地跳过不需要的行。
当然把一个简单的in.readLine ()
只是你结束前for
-loop将排序了这一点?
即:
for (linenum=0; linenum<20; linenum++) {
read = in.readLine();
if(read==null){}
else{
System.out.println(read);
}
in.readLine ();
}
您已经有一个行数计数器,因此,如果要使用每隔一行,请使用取模检查
if((linenum % 2) == 1){
System.out.println(read);
}
每当您在一行中阅读时,只需执行以下操作即可:
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
}
这使代码变得动态。 如果文本文件更改,而整数出现在不同的编号行上,则您的代码可以保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.