日期:2014-05-16 浏览次数:20928 次
* RandomAccessFile有强大的文件读写功能,其内部是大型 byte[],可以通过seek(),getFilePointer()等方法操作的指针,方便对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。
* 用途举例:多线程下载设计
import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileTest { /** * RandomAccessFile是IO包的类,但是其自成一派,从基数中继承而来。 只可以对文件进行操作,可以对文件进行读取和写入。 * 当模式为r是,当文件不存在时会报异常,当模式为rw时,当文件不存在时,会自己动创建文件,当文件已经存在时 不会对原有文件进行覆盖。 * RandomAccessFile有强大的文件读写功能,其内部是大型 * byte数组,可以通过seek(),getFilePointer()等方法操作的指针,方便 * 对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。 */ public static void main(String[] args) { writeTest(); readTest(); } private static void readTest() { RandomAccessFile raf = null; try { //创建一个随机访问对象,且文件的访问模式为只读。 //注意,一旦模式为只读,就不对其进行写入操作。 raf = new RandomAccessFile("D:\\raf.txt", "r"); //文件只读模式,写入操作将抛异常 //raf.write("datou".getBytes()); //可直接操作指针,灵活的访问内容 raf.seek(12); byte b[] = new byte[4]; raf.read(b); System.out.println(new String(b)); } catch (IOException e) { e.printStackTrace(); } finally { try { if (raf != null) raf.close(); } catch (IOException e) { e.printStackTrace(); } } } private static void writeTest() { RandomAccessFile raf = null; try { //创建一个可读写的对象 raf = new RandomAccessFile("D:\\raf.txt", "rw"); //写入数据。 可直接操作指定基本数据类型的对象。 raf.writeBytes("java hello"); raf.writeInt(23); raf.writeBytes("where are you"); raf.writeInt(22); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (raf != null) raf.close(); } catch (IOException e) { e.printStackTrace(); } } } }