Java中的数据流
我使用java中的数据流类来执行读写操作。我的问题是我没有关闭这两个流,甚至没有刷新数据,那么它是如何正常工作的 我的意思是说,如果数据没有从DataOutputStream中刷新出来,那么它是如何成功地从DataIIInputStream读取数据的。Java中的数据流,java,file-io,network-programming,java-io,Java,File Io,Network Programming,Java Io,我使用java中的数据流类来执行读写操作。我的问题是我没有关闭这两个流,甚至没有刷新数据,那么它是如何正常工作的 我的意思是说,如果数据没有从DataOutputStream中刷新出来,那么它是如何成功地从DataIIInputStream读取数据的。 public class DataStream { public static void main(String[] args) { DataOutputStream dataOutputStream = null;
public class DataStream {
public static void main(String[] args) {
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
dataOutputStream = new DataOutputStream(new FileOutputStream("E:/output.in"));
dataOutputStream.writeInt(12345);
dataOutputStream.writeFloat(123.45F);
dataOutputStream.writeLong(12345);
dataInputStream = new DataInputStream(new FileInputStream("E:/output.in"));
int intValue = dataInputStream.readInt();
float floatValue = dataInputStream.readFloat();
long longValue = dataInputStream.readLong();
System.out.println("int = " + intValue);
System.out.println("float = " + floatValue);
System.out.println("long = " + longValue);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的问题是我没有关闭这两个流,甚至没有刷新数据,那么它是如何正常工作的
因为DataOutputStream
和FileOutputStream
都没有缓冲
我的问题是我没有关闭这两个流,甚至没有刷新数据,那么它是如何正常工作的
因为
DataOutputStream
和FileOutputStream
都没有缓冲。可能是运气。如果您不刷新并关闭,它可能会完全刷新数据,但这并不能保证。可能是运气。如果不刷新并关闭,它可能会完全刷新数据,但不能保证。但不能保证文件系统对数据的处理。@teppic我不确定您在这里想说什么。OP所经历的行为的原因就是我在这里所说的。文件系统行为是由操作系统定义的,而不是由Java定义的,但是可以肯定的是,在大多数(如果不是所有)当前操作系统中,任何应用程序写入文件的数据都可以被该应用程序读取。在20世纪70年代,有一个文件在关闭之前根本不存在,但那是很久以前的事了。但是,对于文件系统如何处理数据,还没有任何保证。@teppic我不确定你在这里想说什么。OP所经历的行为的原因就是我在这里所说的。文件系统行为是由操作系统定义的,而不是由Java定义的,但是可以肯定的是,在大多数(如果不是所有)当前操作系统中,任何应用程序写入文件的数据都可以被该应用程序读取。20世纪70年代有一次,文件在关闭之前根本不存在,但那是很久以前的事了。