从文件读取时如何跳过原始数据值
How to skip primitive data values while reading from file
我写了一个 Java 从文件中读取整数的程序。之前使用以下代码将五个整数写入该文件:
Scanner s=new Scanner(System.in);
DataOutputStream d=null;
System.out.println("Enter 5 integers");
try{
d=new DataOutputStream(new FileOutputStream("num.dat"));
for(int i=1;i<=5;i++){
d.writeInt(s.nextInt());
} //for
} //try
catch(IOException e){
System.out.println(e.getMessage());
System.exit(0);
}
finally{
try{
d.close()
}
catch(Exception e){}
}//finally
现在从文件 num.dat 读取整数时,我希望跳过 'n' 个整数。我在另一个 class 中使用了以下代码:
DataInputStream d=null;
Scanner s=new Scanner(System.in);
int n=0; //stores no. of integers to be skipped
try{
d=new DataInputStream(new FileInputStream("num.dat");
for (...){
if(...)
n++; //condition to skip integers
} //for
}//try
catch(IOException e){
System.out.println(e.getMessage());
System.exit(0);
}
finally{
try{
d.skip(n); //skips n integers
System.out.println("Requested Integer is "+d.readInt());
d.close();
}
catch(Exception e) {}
} //finally
仅当我请求文件的第一个整数时,程序才会显示正确的输出。如果我试图跳过一些整数,它要么不给出输出,要么给出错误的输出。我在第一个程序中输入的整数不是一位数而是三位整数。我还尝试跳过三位数整数的个别数字,但这也无济于事。请告诉我如何在读取原始数据值时跳过。
d.skip(n); //skips n integers
skip(long n)
方法的这种解释是不正确的:它跳过 n
字节 ,而不是 n
整数:
Skips over and discards n bytes of data from the input stream.
要解决此问题,请编写您自己的调用 d.readInt()
n
次并丢弃结果的方法。您也可以不使用方法,只需添加一个循环即可:
try {
//skips n integers
for (int i = 0 ; i != n ; i++) {
d.readInt();
}
System.out.println("Requested Integer is "+d.readInt());
d.close();
}
catch(Exception e) {}
我写了一个 Java 从文件中读取整数的程序。之前使用以下代码将五个整数写入该文件:
Scanner s=new Scanner(System.in);
DataOutputStream d=null;
System.out.println("Enter 5 integers");
try{
d=new DataOutputStream(new FileOutputStream("num.dat"));
for(int i=1;i<=5;i++){
d.writeInt(s.nextInt());
} //for
} //try
catch(IOException e){
System.out.println(e.getMessage());
System.exit(0);
}
finally{
try{
d.close()
}
catch(Exception e){}
}//finally
现在从文件 num.dat 读取整数时,我希望跳过 'n' 个整数。我在另一个 class 中使用了以下代码:
DataInputStream d=null;
Scanner s=new Scanner(System.in);
int n=0; //stores no. of integers to be skipped
try{
d=new DataInputStream(new FileInputStream("num.dat");
for (...){
if(...)
n++; //condition to skip integers
} //for
}//try
catch(IOException e){
System.out.println(e.getMessage());
System.exit(0);
}
finally{
try{
d.skip(n); //skips n integers
System.out.println("Requested Integer is "+d.readInt());
d.close();
}
catch(Exception e) {}
} //finally
仅当我请求文件的第一个整数时,程序才会显示正确的输出。如果我试图跳过一些整数,它要么不给出输出,要么给出错误的输出。我在第一个程序中输入的整数不是一位数而是三位整数。我还尝试跳过三位数整数的个别数字,但这也无济于事。请告诉我如何在读取原始数据值时跳过。
d.skip(n); //skips n integers
skip(long n)
方法的这种解释是不正确的:它跳过 n
字节 ,而不是 n
整数:
Skips over and discards n bytes of data from the input stream.
要解决此问题,请编写您自己的调用 d.readInt()
n
次并丢弃结果的方法。您也可以不使用方法,只需添加一个循环即可:
try {
//skips n integers
for (int i = 0 ; i != n ; i++) {
d.readInt();
}
System.out.println("Requested Integer is "+d.readInt());
d.close();
}
catch(Exception e) {}