16.随机访问流
作者:互联网
1.RandomAccessFile有两个作用
-
可以实现对一个文件做读写的操作
-
可以访问文件的任意位置,不像其他流,只能按照小猴顺序读取
2.RandomAccessFile的三个核心方法
-
.RandomAccessFile(String name,String dome),name:确定文件 dome:确定读写权限,r或rw
-
seek(long a),定位流对象的读写位置,a:确定度读写位置距离文件开头的 字节 个数
-
getFilePointer()获得流的当前读写位置
3.基础操作
3-1:读写数据
import java.io.RandomAccessFile;
public class Dome19 {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
//创建随机访问流对象
raf = new RandomAccessFile("d:/test.txt", "rw");
int[] arr = new int[]{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
//写入数据
for (int i = 0; i < arr.length; i++) {
raf.writeInt(arr[i]);
}
//定位 读取或写入 的位置
raf.seek(4);
//打印输出
for (int i = 0; i < arr.length-1; i++) {
System.out.print(raf.readInt() + "\t");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (raf != null) {
raf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
3-2:隔一个读一个
import java.io.RandomAccessFile;
public class Dome19 {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
//创建随机访问流对象
raf = new RandomAccessFile("d:/test.txt", "rw");
int[] arr = new int[]{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
//写入数据
for (int i = 0; i < arr.length; i++) {
raf.writeInt(arr[i]);
}
//定位 读取或写入 的位置
raf.seek(0);
//打印输出
for (int i = 0; i < arr.length; i+=2) {
raf.seek(i*4);
System.out.print(raf.readInt() + "\t");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (raf != null) {
raf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
3-3:替换某个位置的数据
import java.io.RandomAccessFile;
public class Dome19 {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
//创建随机访问流对象
raf = new RandomAccessFile("d:/test.txt", "rw");
int[] arr = new int[]{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
//写入数据
for (int i = 0; i < arr.length; i++) {
raf.writeInt(arr[i]);
}
//定位 读取或写入 的位置
raf.seek(0);
//打印输出
for (int i = 0; i < arr.length; i += 2) {
raf.seek(i * 4);
System.out.print(raf.readInt() + "\t");
}
System.out.println();
//定位到要替换的位置
raf.seek(8);
//替换
raf.writeInt(45);
//打印输出
for (int i = 0; i < arr.length; i += 2) {
raf.seek(i * 4);
System.out.print(raf.readInt() + "\t");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (raf != null) {
raf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
标签:raf,arr,16,int,访问,length,随机,seek,RandomAccessFile 来源: https://www.cnblogs.com/lyq888/p/16145455.html