Java中的数据流

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;

我使用java中的数据流类来执行读写操作。我的问题是我没有关闭这两个流,甚至没有刷新数据,那么它是如何正常工作的

我的意思是说,如果数据没有从DataOutputStream中刷新出来,那么它是如何成功地从DataIIInputStream读取数据的。

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年代有一次,文件在关闭之前根本不存在,但那是很久以前的事了。