Java面试题之RandomAccessFile是对文件做的操作和方法
RandomAccessFile是对文件做哪些操作?常用方法有哪些?
RandomAccessFile用来读写文件数据内容的类,是基于指针进行读写,即:总是在执行当前位置读写字节,有两种常用模式:
1):只读模式 r: RandomAccessFile raf=new RandomAccessFile("raf.dat","r");
2):读写模式 rw : RandomAccessFile raf=new RandomAccessFile("raf.dat","rw");
第一个参数: 文件路径及文件名,第二个参数:模式 r rw
注意:
读写模式下,如果在读取文件的时目录下没有该文件,他会自动创建一个该名字的文件。只读模式下不会创建,并会抛出异常,常用方法:
void write(int d):向文件中写入1个字节,写的内容是指定int值对应2进制的低八位int read( ):读取一个字节,并以10进制的int值返回,返回的数字应在0-255之间,若返回-1,则表示读到文件末尾了,每次读取后自动移动文件指针,准备下次读取,int read(byte[]data):一次性尝试读取给定的字节数组总长度的字节量,并将读取到的字节存入到该数组中,返回值为实际读到的字节量,若返回值为-1,表示本次没有读到任何数据(文件末尾)。
void write(byte[]data):将给定的字节数组中所有字节一次性写出。
void write(byte[]data,int s,int len):将给定的字节数组从下标s处的连续len个字节一次性写出。
byte[] getBytes():把当前字符串按照系统默认字符集转换成一组字节。
byte[] getBytes(String csn):按照指定的字符集将当前字符串转换为一组字节常用字符集名称:GBK,UTF-8
long getFilePointer():获取当前指针的位置
void seek(long pos):将指针移动到指定位置
void writeInt(int d):将int值4个字节一次性写出,底层还是位移运算操作了4次。
另外还有重载的写出 double,byte等基本类型的方法,此处省略。
怎么将读到的字节转成字符串:
String构造方法支持4个参数:每次读取的字节量,从0开始读取,读取len个字节,使用UTF-8编码,如下:
String str=new String(data,0,len,"UTF-8");把读到字节按照指定格式转换为字符串。