我在阅读文件内容时遇到了一些问题 虽然程序正在读取内容,但它正在从文件中跳过奇数行数据。
文件示例:
Czech Republic____06092015_091108
France____06092015_060256
Greece____06092015_073528
Hungary____06092015_093424
India____06092015_120741
Indonesia____06092015_140940
Kazakhstan____06092015_095945
Mexico____06092015_061522
Turkey____06092015_100457
但输出结果为:
java.io.DataInputStream@1909752
France____06092015_060256
Hungary____06092015_093424
Indonesia____06092015_140940
Mexico____06092015_061522
我不明白为什么它会以这种格式提供输出。
我在输入文件中有行分隔符,是否会导致问题?
public class tst {
// Main method
public static void main(String args[]) {
// Stream to read file
FileInputStream fin;
int k = 0;
try {
// Open an input stream
fin = new FileInputStream(
"C:/Users/BOT2/Desktop/MC_WIth_DATA_Files.txt");
DataInputStream in1 = new DataInputStream(fin);
// Read a line of text
System.out.println(new DataInputStream(fin));
// Close our input stream
BufferedReader br1 = new BufferedReader(new InputStreamReader(in1));
while (br1.readLine() != null) {// System.out.println(k);k++;
System.out.println(br1.readLine());
}
br1.close();
fin.close();
}
// Catches any error conditions
catch (IOException e) {
System.err.println("Unable to read from file");
System.exit(-1);
}
}
}
答案 0 :(得分:3)
第一行由:
打印System.out.println( new DataInputStream(fin) );
它为您提供new DataInputStream(fin).toString()
下一行以这种格式打印,因为每个循环读取两行:
第一行while (br1.readLine() != null){
和第二行:System.out.println(br1.readLine()); }
因此您必须将代码更改为:
String line;
while ((line =br1.readLine()) != null){//System.out.println(k);k++;
System.out.println(line );
}
br1.close();
fin.close();
答案 1 :(得分:3)
您有两个错误。首先,出于某种原因打印出dataStream对象。摆脱:
// Read a line of text
System.out.println( new DataInputStream(fin) );
接下来,你扔掉了一行文字。试试这个:
String line;
while ((line = br1.readLine()) != null){
System.out.println(line);
}
答案 2 :(得分:2)
问题出在这里
while (br1.readLine() != null){
System.out.println(br1.readLine());
}
br1.close();
fin.close();
}
当你调用br1.readLine()时,它会读出当前行并移动光标位置以指向下一行。您正在调用此方法两次,导致您跳过备用行。你应该每次迭代只调用一次readLine()。
答案 3 :(得分:1)
我建议使用更清晰的代码,这样您和任何阅读它的人都会立即理解您在做什么。
试试这个:
Scanner read;
try{
read=new Scanner(new FileReader("your path"));
while(read.hasNext()){
System.out.println(read.nextLine);
}
read.close();
}
catch(FileNotFoundException e){
}