2016-11-22 39 views
0

我在java中使用Data Stream类来执行读取和写入操作。我的问题是我没有关闭这两个流,甚至没有刷新数据,以及它如何正常工作。Java中的数据流

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

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(); 
     } 
    } 
} 
+1

好运,可能。如果你没有刷新和关闭,它可以完全清空数据,但它没有这样的保证。 –

回答

2

我的问题是我不关闭两个流,甚至不冲水的数据,然后它是如何工作正常。

因为DataOutputStreamFileOutputStream都没有被缓冲。

+0

但是没有关于文件系统对数据做什么的保证。 – teppic

+0

@teppic我不确定你想在这里做什么。 OP所经历的行为的原因是我在这里陈述的。文件系统行为是由操作系统定义的,而不是由Java定义的,但是可以肯定的是,任何应用程序写入文件的数据都可以在大多数(如果不是全部)当前操作系统中被该应用程序读取。 20世纪70年代有一个文件直到它们关闭时才存在,但那是很久以前的事了。 – EJP

+0

我站好了。 – teppic