学习记录325@随机访问流之断点传输

it2023-06-17  82

该流认为文件是一个大型的byte数组,该流有一个隐藏的文件指针,指针默认从0开始,从指针的位置可以存储数据,也可以写入数据

传统的流在拷贝文件时如果中断则需要从新传输,但是因为随机访问流具有指针功能,因此可以设置指针,再根据设置的指针处继续进行文件拷贝;

package com.dream.test05; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class Test01{ public static void main(String[] args) throws IOException { //输入流 RandomAccessFile in = new RandomAccessFile("02_IO流.avi","rw"); // 输出流文件 File file = new File("copy.avi"); //输出流 RandomAccessFile out = new RandomAccessFile(file,"rw"); // 输出文件长度,作为指针使用, // 当程序中断后,再次执行,输入流和输出流的指针都在需要继续进行的地方 long length=out.length(); // 设置指针位置 in.seek(length); out.seek(length); // 为了看到中断的效果每次传输少一点,只传输100个字节 // 程序运行一段时间后,主动中断程序,查看拷贝文件的大小,再运行程序比前一段时间短的时间后中断,再查看文件大小,比之前的文件更大 byte[] bt=new byte[100]; int len; // 传输 while ((len=in.read(bt))!=-1) { out.write(bt,0,len); } // 关闭 in.close(); out.close(); } }

最新回复(0)