文章关键字:|DataOuput|readDouble()|问题|数据|读取|打印|
题目要求:想文件t1.txt中写入double型的数据然后在从文件t1.txt中读出并打印。
这本来是很简单的一个程序,可是我在写的时候却遇到了问题。下面是我的代码:
import java.io.*;
class TestDataRead{
public static void main(String[] args){
DataInputStream dis = null;
DataOutputStream dos = null;
try{
dos = new DataOutputStream(new FileOutputStream("t1.txt"));
dis = new DataInputStream(new FileInputStream(“t1.txt"));
}catch(FileNotFoundException e){
System.out.println("文件打开失败");
System.exit(-1);
}
double d;
try{
for(int i=1; i<3; i++){
dos.writeDouble((double)(i*10));//向文件中写入9个double型的数据
}
dos.flush();
dos.close();
while((d=dis.readDouble()) != -1){ //开始从文件中读取数据
System.out.println(d); //打印出数据
}
dis.close();
}catch(IOException e){
System.out.println(e);
e.printStackTrace();
System.exit(-1);
}
}
}
程序结果:
10.0
20.0
java.io.EOFException
这里抛出了一个例外。
查看API关于readDouble()方法的定义:
readDouble
public final double readDouble() throws IOException //参见DataInput的readDouble方法的常规协定。
从包含的输入流中读取此操作需要的字节。
指定者:接口 DataInput 中的 readDouble
返回:此输入流的下八个字节,将它们解释为一个 double。
抛出:
EOFException - 如果此输入流在读取这八个字节之前到达末尾。
IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。
可以看出若选择用readDouble()每次读出一个double数据,那么所有值都是有效的,所以不可再用返回值来侦测何时结束输入。相反,可用available()方法判断有多少字符可用。故将源代码中的红色部分代码用一下代码替换则可以的到预期效果。
while(dis.available() != 0){
d = dis.readDouble();
System.out.println(d);
}
dis.available()用来判断还有多少字符可供读入。
原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9195
题目要求:想文件t1.txt中写入double型的数据然后在从文件t1.txt中读出并打印。
这本来是很简单的一个程序,可是我在写的时候却遇到了问题。下面是我的代码:
import java.io.*;
class TestDataRead{
public static void main(String[] args){
DataInputStream dis = null;
DataOutputStream dos = null;
try{
dos = new DataOutputStream(new FileOutputStream("t1.txt"));
dis = new DataInputStream(new FileInputStream(“t1.txt"));
}catch(FileNotFoundException e){
System.out.println("文件打开失败");
System.exit(-1);
}
double d;
try{
for(int i=1; i<3; i++){
dos.writeDouble((double)(i*10));//向文件中写入9个double型的数据
}
dos.flush();
dos.close();
while((d=dis.readDouble()) != -1){ //开始从文件中读取数据
System.out.println(d); //打印出数据
}
dis.close();
}catch(IOException e){
System.out.println(e);
e.printStackTrace();
System.exit(-1);
}
}
}
程序结果:
10.0
20.0
java.io.EOFException
这里抛出了一个例外。
查看API关于readDouble()方法的定义:
readDouble
public final double readDouble() throws IOException //参见DataInput的readDouble方法的常规协定。
从包含的输入流中读取此操作需要的字节。
指定者:接口 DataInput 中的 readDouble
返回:此输入流的下八个字节,将它们解释为一个 double。
抛出:
EOFException - 如果此输入流在读取这八个字节之前到达末尾。
IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。
可以看出若选择用readDouble()每次读出一个double数据,那么所有值都是有效的,所以不可再用返回值来侦测何时结束输入。相反,可用available()方法判断有多少字符可用。故将源代码中的红色部分代码用一下代码替换则可以的到预期效果。
while(dis.available() != 0){
d = dis.readDouble();
System.out.println(d);
}
dis.available()用来判断还有多少字符可供读入。
原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9195