Android开发中实现文件分割和组装的方法
来源:爱站网时间:2021-02-17编辑:网友分享
在文件分割和组装的时候,文件需要分成很多包进行发送,下面由爱站技术频道来介绍一下Android开发中实现文件分割和组装的方法,希望能为你带来帮助。
在文件分割和组装的时候,文件需要分成很多包进行发送,下面由爱站技术频道来介绍一下Android开发中实现文件分割和组装的方法,希望能为你带来帮助。
本文以实例形式讲述了Android实现文件的分割和组装的方法,主要是针对UDP数据包进行的分割和组装。分享给大家供大家参考之用。具体方法如下:
一般来说,在使用UDP数据包发送文件时,由于UDP数据包大小的限制,一个文件要放在几个UDP数据包里面发送,这就需要把一个文件分割成若干部分,分别放进若干个UDP数据包里面,在接收端,收到这些UDP数据包以后,再对文件进行组装,从而得到一个完整的文件。步骤如下:
一、定义的相关变量:
// 要分割的文件 public static RandomAccessFile raf_split; // 要合并的文件 public static RandomAccessFile raf_merge; // 文件长度 public static long len; // Byte数组 public static int offset; public static int os = 5; public static int size = 1024-os; public static byte file_data[] = new byte[1024];
二、FileOperClass类实现文件的分割和组装操作:
// 构造函数(0-分割文件,1-合并文件)
public FileOperClass(String file, int x){
// 分割文件
if (x == 0){
try{
// RandomAccessFile以只读方式打开文件
raf_split = new RandomAccessFile(file,"r");
// 获得文件大小
len = raf_split.length();
// 需要几个数据包
pnum = (int) Math.ceil((raf_split.length()*1.0)/(size * 1.0)) + 1;
// 最后一个数据包里面数据多少
pmod = (int) (raf_split.length() - (pnum -2)* size);
// 分割文件
split();
}
catch (Exception e){
}
}
// 合并文件
else if (x == 1){
try{
// RandomAccessFile以读写方式打开文件
raf_merge = new RandomAccessFile(file,"rw");
// 合并文件
merge();
}
catch (Exception e){
}
}
}
三、分割文件:
// 分割文件并发送
public static void split(){
int m1,m2;
p_id = 0;
offset = 0;
try{
while (len>0){
// 数据包类型
file_data[0] = (byte) 2;
// 客户端ID
file_data[1] = (byte) MainActivity.cli_id;
// 会话ID
file_data[2] = (byte) MainActivity.ses_id;
// 该会话数据包数量
file_data[3] = (byte) pnum;
// 数据包ID
file_data[4] = (byte) p_id;
// seek
raf_split.seek(offset);
// 读出数据到file_data
raf_split.read(file_data, os, size);
// 发送数据包
MainActivity.trd_send.set_action(2, file_data);
len = len - size;
p_id = p_id + 1;
offset = offset + size;
}
// 记录最后一个数据包剩余字节的数据包
// 数据包类型
file_data[0] = (byte) 2;
// 客户端ID
file_data[1] = (byte) MainActivity.cli_id;
// 会话ID
file_data[2] = (byte) MainActivity.ses_id;
// 该会话数据包数量
file_data[3] = (byte) pnum;
// 数据包ID
file_data[4] = (byte) p_id;
m1 = pmod / 128;
m2 = pmod % 128;
file_data[5] = (byte) m1;
file_data[6] = (byte) m2;
// 发送数据包
MainActivity.trd_send.set_action(2, file_data);
}
catch (Exception e){
}
finally{
// 关闭文件
try{
raf_split.close();
}
catch(Exception err){
}
}
}
四、合并文件:
// 合并文件
public static void merge(){
byte[][] tmp_byte = new byte[MainActivity.mer_pkt_num][1024];
int i,j;
try{
for(i=0; i
相信爱站技术频道介绍的Android开发中实现文件分割和组装的方法,相信大家都有了一定的了解了,可以来到专业的平台学习!
