RandomAccesseFile
RandomAccesseFile 的构造方法
RandomAccesseFile(File file,String mode) | 使用参数file指定被访问的文件,并使用mode来指定访问模式 |
RandomAccesseFile(String name,String mode) | 使用参数name指定被访问文件的路径,并使用mode来指定访问方式 |
RandomAccessFile 的常用方法
long getFilePointer() | 返回当前读写指针所处的位置 |
void seek(long pos) | 设置读写指针的位置,与文件开头相隔pos个字节数 |
int skipBytes(int n) | 使读写指针从当前位置开始,跳过n个字节 |
void write(byte[ ] b) | 将指定的字节数组写入到这个文件,并从当前文件指针开始 |
void setLength(long newLength) | 设置此文件的长度 |
final String readLine() | 从指定文件当前指针读取下一行内容 |
新建一个test.txt文件里面输入数字3作为软件试看次数(文件就放在项目下)
试看次数模拟代码:
import java.io.*;
public class RandomAccessFileTest {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
//创建RandomAccessFile对象,并以读写模式打开文件test.txt文件,rw:读写
//直接放在项目下路径为test.txt 如果放在src目录下路径为"src/test.txt"
raf = new RandomAccessFile("test.txt","rw");
//读取还可以免费观看的次数,第一次读取时view为3
int view = Integer.parseInt(raf.readLine());
//判断剩余次数
if(view > 0) {
//(每观看一次,次数就减少一次)
view = view -1;
System.out.println("您还可以免费观看 " + view + "次");
//将记录指针重新指向文件开头
raf.seek(0);
//将剩余次数再次写入文件
raf.write((view + "").getBytes());
}else {
System.out.println("您的观看次数已经用完了!");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(raf != null) {
try {
raf.close();//关闭
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
试看次数效果:
控制台:
test.txt文件
在项目下新建一个random.txt文件,不用添加内容。
读取指定位置的内容代码:(与文件相隔3个字符处,读取6个字节)
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileTest02 {
public static void main(String[] args) throws IOException {
//创建RandomAccessFile对象,并以读写模式打开文件random.txt文件,rw:读写
RandomAccessFile raf = new RandomAccessFile("random.txt", "rw");
//random.txt中写入内容
raf.write("RandomAccessFile".getBytes());
raf.seek(3);//设置读写指针的位置,与文件开头相隔3个字节数
//读取
byte[] buf = new byte[6];
int len = raf.read(buf);//读取6个字节
System.out.println(new String(buf,0,len));
raf.close(); // 关闭
}
}
写入后内容后的random.txt:
读取的内容: