当前位置: 代码迷 >> J2SE >> DataInputStream跟DataOutputStream
  详细解决方案

DataInputStream跟DataOutputStream

热度:142   发布时间:2016-04-23 19:51:41.0
DataInputStream和DataOutputStream
先向test.txt中写了一个float类型的变量和一个double类型的变量

DataOutputStream dos = new DataOutputStream(new FileOutputStream("e:\\test.txt"));
dos.writeFloat(3.14F);
dos.writeDouble(3.1415926);
dos.close();


然后用输入流去读取

DataInputStream dis = new DataInputStream(new FileInputStream("e:\\test.txt"));
float f = dis.readFloat();
double d = dis.readDouble();
dis.close();
System.out.println(f);
System.out.println(d);


运行结果是
1.4757395E20
-32.570000082271015

为什么和我保存的数值不一样???
------解决思路----------------------

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import junit.framework.TestCase;

public class Test38 extends TestCase {

public void test1() {
try {
DataOutputStream dos = new DataOutputStream(new FileOutputStream(
"e:\\test.txt"));
dos.writeByte(97);
dos.writeInt(192);
dos.writeFloat(3.14F);
dos.writeDouble(3.1415926);
dos.writeBoolean(1+2==3);
dos.writeChar('A');
dos.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public void test2() {
try {
DataInputStream dis = new DataInputStream(new FileInputStream(
"e:\\test.txt"));
byte b = dis.readByte();
int i = dis.readInt();
float f = dis.readFloat();
double d = dis.readDouble();
boolean bo = dis.readBoolean();
char c = dis.readChar();
dis.close();
System.out.println(b);
System.out.println(i);
System.out.println(f);
System.out.println(d);
System.out.println(bo);
System.out.println(c);
} catch (Exception e) {
e.printStackTrace();
}
}
}


运行结果也完全正常啊。
97
192
3.14
3.1415926
true
A