随机流要实现RandomAccessFile这个方法
RandomAccessFile raf = new RandomAccessFile(“D:/IOTest/helloworld.txt”, “r”);读数据第二个参数是“r”写数据第二个参数是“rw”
//读数据
public class RandomDemo {
/**
* 断点续传 暂停后,可以从原来的地方接着继续传 多线程 断点下载 分块下载
*
* @param args
*/
public static void main(String[] args) {
// 创建一个 随机流的对象
try {
// 使用dataInputStream
RandomAccessFile raf = new RandomAccessFile(
"D:/IOTest/helloworld.txt", "r");
char c = 0;
raf.seek(2048);
System.out.println("文件指针" + raf.getFilePointer());
byte[] buf = new byte[1024];
int len = 0;
while ((len = raf.read(buf)) != -1) {
System.out.println(new String(buf, 0, len));
System.out.println("文件指针" + raf.getFilePointer());
}
//下面使用char来实现的和上面一样
// while ((c = raf.readChar()) != -1) {
// System.out.print(c);
// System.out.println("文件指针" + raf.getFilePointer());
// }
} catch (Exception e) {
e.printStackTrace();
}
}
}
//写数据
public static void main(String[] args) {
try {
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
raf.writeUTF("你好,随机流");
// 读
raf.seek(0);// 跳到头
// System.out.println(raf.readBoolean());
// System.out.println(raf.readChar());
// System.out.println(raf.readDouble());
// System.out.println(raf.readUTF());
// 最后面插入
// 跳到最后
raf.seek(raf.length());
raf.writeUTF("插入到最后");
// 插入到中间,从指定位置开始插入
raf.seek(20);
raf.writeUTF("插入到中间");
} catch (Exception e) {
e.printStackTrace();
}
}