数据流

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/84260370

1、DataInputStream和DataOutputStream都是处理流


1、实例1:TestDataStream

(1)存和读的顺序相同

import java.io.*;

/*
 * 功能:最基本的数据流实例
 * 往文件TestDataSteam.dat中直接写入数据,然后读出数据,并打印到控制台
 **/
public class TestDataStream 
{
	public static void main(String[] args)
	{
		DataOutputStream dos=null;
		DataInputStream dis=null;
		try
		{
			dos=new DataOutputStream(new FileOutputStream("data.dat"));
			dos.writeDouble(3.1415926);//存取单元是基本类型,所以写了个double进去
			dos.writeBoolean(true);
			
			dis=new DataInputStream(new FileInputStream("data.dat"));
			System.out.println(dis.readDouble());
			System.out.println(dis.readBoolean());
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				dos.close();
				dis.close();
			}
			catch(IOException e)
			{
				e.printStackTrace();
			}
		}
	}
}

存和读的顺序相同,结果是

(2)存和读的顺序不同

import java.io.*;

/*
 * 功能:最基本的数据流实例
 * 往文件TestDataSteam.dat中直接写入数据,然后读出数据,并打印到控制台
 **/
public class TestDataStream 
{
	public static void main(String[] args)
	{
		DataOutputStream dos=null;
		DataInputStream dis=null;
		try
		{
			dos=new DataOutputStream(new FileOutputStream("data.dat"));
			dos.writeDouble(3.1415926);//存取单元是基本类型,所以写了个double进去
			dos.writeBoolean(true);
			
			dis=new DataInputStream(new FileInputStream("data.dat"));
			//System.out.println(dis.readDouble());
			System.out.println(dis.readBoolean());
			System.out.println(dis.readDouble());
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				dos.close();
				dis.close();
			}
			catch(IOException e)
			{
				e.printStackTrace();
			}
		}
	}
}

存和读的顺序不同,结果是数是有的,但是数和存的时候不一样

(3)打开data.dat文件是乱码的,因为写的时候是用字节流的形式写的,不是纯文本的方式往里写的,而是采用二进制方式存的,所以用记事本打开的话,是不对的。

(4)为什么存和读的顺序不同的话,结果与存和读的顺序一致时不同呢?

  • 与文件结构和程序相关。因为,先存double再存boolean,相当于文件内部的一种私有结构,是一种私有的文件组织方式,这种顺序只有这个程序能够读到。
  • 与程序相关,只有这种程序才能打开这种文件,如果程序内部格式不公开的话,别的人或者别的程序是无法打开这种文件的,只有软件的开发人员才能知道文件的结构。不同的操作系统中有很多文件,每种文件都有一种特定的、关联的、打开这种文件的一种软件,因为只有这种软件才能识别这种文件结构,如果识别不了的话,打不开。
  • 所以这个例子中,现有double后有boolean就是这个文件的一种私有格式。

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/84260370