首页 > 代码库 > Java -- 保存byte[] 数据

Java -- 保存byte[] 数据

//创建文件,将byte数据直接进行保存
private RandomAccessFile file_test;
try {
	File file = new File("/sdcard/data.yuv");  //后缀自己定义
	if (file.exists())
		file.delete();
		file_test = new RandomAccessFile(file, "rw");   //可读写
} catch (Exception ex) {
	Log.v("System.out", ex.toString());
}

//调用
try {
    file_test.write(bytesdata);
} catch (IOException e) {
    e.printStackTrace();
}


* RandomAccessFile是IO包的类,但是其自成一派,从Object直接继承而来。 只可以对文件进行操作,可以对文件进行读取和写入。
* 当模式为r是,当文件不存在时会报异常,当模式为rw时,当文件不存在时,会自己动创建文件,当文件已经存在时 不会对原有文件进行覆盖。

* RandomAccessFile有强大的文件读写功能,其内部是大型 byte[],可以通过seek(),getFilePointer()等方法操作的指针,方便对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。


RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。

基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream结合起来,再加上它自己的一些方法,比如定位用的getFilePointer( ),在文件里移动用的seek( ),以及判断文件大小的length( )、skipBytes()跳过多少字节数。此外,它的构造函数还要一个表示以只读方式("r"),还是以读写方式("rw")打开文件的参数 (和C的fopen( )一模一样)。它不支持只写文件。

Java -- 保存byte[] 数据