二进制I/O写入读取文件的一个简单实例

.dat不用事先创立,如果之前没有文件的话用了FileOutputSream方法会给你创造一个文件。
经过调试可以看出来,如果改一下代码,在输出,发现之前的内容没有了,是因为直接用FileOutputSream方法是会删除文件的当前内容的,直接赋予新内容。如果想要追加内容的话在后面用个true。
FileOutputStream output= new FileOutputStream(“temp.dat”,true);

package binaryIO;
import java.io.*;

public class TestFileStream {
	public static void main(String[] args)throws IOException{
		FileOutputStream output= new FileOutputStream("temp.dat");      //为文件创造一个FileInputSream对象
		for(int i=1;i<=10;i++)
			output.write(i);
		
		output.close();           //千万记得关闭流,否则可能造成数据受损或者导致其他的程序错误
		
		FileInputStream input=new FileInputStream("temp.dat");         //直接写得到的文件是和类的根目录一样的,可以自己改变路径,写进去就是了
		
		int value;
		while((value=input.read())!=-1)        //在流的末尾返回的是-1,如果不到末尾就输出
			System.out.print(value+" ");
		input.close();
	}

}

目录在这里,and~直接开.dat是打不开的:
在这里插入图片描述

结果:
在这里插入图片描述

在dos里面操作一下:
下面那个奇奇怪怪的符号就是二进制的数据
在这里插入图片描述

补充一个稍微复杂一点的,下面两个类是一个例子
这是一个把对象作为传递的东西在二进制文件之间读写。注意read的时候用了强制转换,还有就是输入流多throw了一个nodefoundexception ,java虚拟机在read这个对象的时候,还没有加载他的类,就会出现异常。

package binaryIO;
import java.io.*;
public class TestObjectOutputStream {
	public static void main(String[] args) throws IOException{
		ObjectOutputStream output=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("object.dat")));
		
		output.writeUTF("Jhone");
		output.writeDouble(85.5);
		output.writeObject(new java.util.Date());
		
		output.close();
	}

}

package binaryIO;
import java.io.*;

public class TestObejectInputStream {
	public static void main(String[] args)throws ClassNotFoundException,IOException{
		ObjectInputStream input=new ObjectInputStream(new FileInputStream("object.dat"));
		
		String name=input.readUTF();
		double score=input.readDouble();
		java.util.Date date=(java.util.Date)(input.readObject());
		System.out.println(name+" "+score+" "+date);
		
		input.close();
	}

}

猜你喜欢

转载自blog.csdn.net/alike_meng/article/details/84787202
今日推荐