Randomaccessfile

发表时间:2017-05-09 13:16:51 浏览量( 15 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、RandomAccessFile讲解

RandomAccessFile类不属于InputStream或者OutputStream分层结构的一部分,它实现了DataInput和DataOutput。RandomAccessFile用于包含了已知长度记录的文件,我们可以使用seek()方法从一条记录移至另一条,可在一个文件里向前或向后移动,然后读取或修改那部分的记录,不像之前的InputStream和OutputStream的实现类那样,每次都从头开始读取。

RandomAccessFile可以用户多线程上传下载文件的时候使用。因为大家还没有学习到线程和网络的相关知识,所以这节课相对比较简单,但是不代表这个类不重要。

构造器要求使用者传入一个变量指出对象只是随机读(“r”),还是读写兼施(“rw”)。getFilePointer()用于了解当前在文件的什么地方,seek()用于移至文件内的一个新地点。length()用于判断文件的最大长度。

二、示例代码

	public static void main(String[] args) {
		//mode模式   r只读 rw 读写
		try {
			RandomAccessFile rafile=new RandomAccessFile(new File("e://ram.txt"), "rw");
		
		    System.out.println("文件长度:"+rafile.length());
		    
		    //改变光标的位置:
		    rafile.seek(3L);
		    System.out.println("光标的位置:"+rafile.getFilePointer());
		    
		    //主意光标。覆盖字符
		    rafile.writeBytes("abc");
		    
		    int temp;
		    temp=rafile.read();//从当前光标的位置开始往后读取
		    while(temp!=-1){
		    	System.out.println("光标的位置:"+rafile.getFilePointer());
		    	System.out.println((char)temp);
		    	temp=rafile.read();//读取下一个
		    }
		    
		    rafile.close();
		
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}