iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现文件的分割和组装
  • 545
分享到

Android实现文件的分割和组装

Android 2022-06-06 10:06:40 545人浏览 安东尼
摘要

本文以实例形式讲述了Android实现文件的分割和组装的方法,主要是针对UDP数据包进行的分割和组装。分享给大家供大家参考之用。具体方法如下: 一般来说,在使用UDP数据包发送

本文以实例形式讲述了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<MainActivity.r_datapacket.size(); i++){        
      // 判断数据包是否已经齐全
      if ((MainActivity.r_datapacket.get(i).c_id == MainActivity.mer_cli_id) && (MainActivity.r_datapacket.get(i).ses_id == MainActivity.mer_ses_id))
      {
        // 读出数据包的数据进byte数组
        tmp_byte[MainActivity.r_datapacket.get(i).p_id] = MainActivity.r_datapacket.get(i).b;
      }        
    }
    for (i=0; i<MainActivity.mer_pkt_num-2; i++){
      // 把byte数组写进文件
      raf_merge.write(tmp_byte[i], os, size);
    }
    // 最后一个byte数组写进文件
    raf_merge.write(tmp_byte[MainActivity.mer_pkt_num-1], os, MainActivity.mer_pkt_mod );
  }
  catch(Exception e){
  }
  finally{
    // 关闭文件
    try{
      raf_merge.close();
    }
    catch(Exception err){
    } 
  }
}

相信本文所述对大家的Android程序设计有一定的借鉴价值。

您可能感兴趣的文章:android利用xml实现分割线Android中Split()字符串分割特殊用法案例详解详解Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)Android中控件GridView实现设置行列分割线的方法示例Android 关于ExpandableListView去掉里头分割线的方法Android RecyclerView网格布局(支持多种分割线)详解(2)Android取消EditText自动获取焦点默认行为Android控件系列之EditText使用方法Android中EditText实现不可编辑解决办法Android EditText实现分割输入内容


--结束END--

本文标题: Android实现文件的分割和组装

本文链接: https://www.lsjlt.com/news/26962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现文件的分割和组装
    本文以实例形式讲述了Android实现文件的分割和组装的方法,主要是针对UDP数据包进行的分割和组装。分享给大家供大家参考之用。具体方法如下: 一般来说,在使用UDP数据包发送...
    99+
    2022-06-06
    Android
  • Linux中怎么分割和重组文件
    这篇文章主要为大家展示了“Linux中怎么分割和重组文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中怎么分割和重组文件”这篇文章吧。使用 csplit 分割文件csplit 是这些...
    99+
    2023-06-28
  • vue如何实现子组件分割
    这篇文章主要介绍vue如何实现子组件分割,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!子组件分割先看个例子<template> <div :>  &nb...
    99+
    2023-06-26
  • 在Linux中怎么分割和重组文件
    本篇内容介绍了“在Linux中怎么分割和重组文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用 csplit 分割文件csplit 是这...
    99+
    2023-06-16
  • Java实现文件的分割与合并
    本文实例为大家分享了Java实现文件的分割与合并的具体代码,供大家参考,具体内容如下 一、文件分割实现思想 1、设置分割文件(块)的大小; 2、通过输入流获取源文件的大小; 3、...
    99+
    2022-11-12
  • C#实现文件分割和合并的示例详解
    目录实践过程效果代码实践过程 效果 代码 public partial class frmSplit : Form { public frmSplit() { ...
    99+
    2022-12-26
    C#文件分割 合并 C#文件分割 C#文件合并
  • python与php实现分割文件代码
    前两天有个朋友说,想实现一个文本文件按照固定行数进行分割成多个文本文件,却不知如何实现。如果数据量小手动分割下就好了,如果数据量很大的话手动完成实在太耗费人力了,也不现实。那么就需要借助脚本去实现。既然有朋...
    99+
    2022-06-04
    代码 文件 python
  • VBS如何实现文本文件分割脚本
    这篇文章给大家分享的是有关VBS如何实现文本文件分割脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。而Windows下没有一个现存的比较好用的分割工具,所以我用VBS做了一个文本文件的分割工具,和各位网友共享。...
    99+
    2023-06-08
  • python实现大文本文件分割成多个小文件
    本文介绍一种将一个大的文本文件分割成多个小文件的方法 方法一: 1.读取文章所有的行,并存入列表中 2.定义分割成的小文本的行数 3.将原文本内容按一定行数依次写入小文件中 4.此方...
    99+
    2022-11-12
  • Linux文件分割与合并怎么实现
    这篇文章主要介绍“Linux文件分割与合并怎么实现”,在日常操作中,相信很多人在Linux文件分割与合并怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux文件分割与合并怎么实现”的疑惑有所帮助!...
    99+
    2023-06-16
  • Linux系统如何对文件进行分割和重组
    Linux系统如何对文件进行分割和重组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用 csplit 分割文件csplit 是这些有趣的小命令中的一个,它永远...
    99+
    2023-06-28
  • Java实现PDF文件的分割与加密功能
    由于``某些不可抗力原因,公司不允许使用itext系列的jar包,因此系统中使用的相关jar得替换成开源的。经比较和尝试考虑使用org.apache.pdfbox来替换,同时修改系统...
    99+
    2022-11-13
  • vue3 可拖动的左右面板分割组件实现
    目录分解组件左侧面板右侧面板入参分解 propsslots具体实现 如何拖动呢?事件监听 宽度处理 优化 buggit地址 最近在使用vue的时候,遇到一个需求,实现左右div可通过...
    99+
    2022-11-12
  • Python 视频文件的分割和合并
    import os;import time;os.system('start "wmplayer.exe", "F:\\abc.mp4"');--分割代码 start----import sys,os;kilobytes = 1024;me...
    99+
    2023-01-31
    视频文件 Python
  • python如何实现大文本文件分割成多个小文件
    小编给大家分享一下python如何实现大文本文件分割成多个小文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂...
    99+
    2023-06-14
  • Numpy数组的组合与分割实现的方法
    目录数组的组合1.水平组合2.垂直组合3.行组合和列组合4.深度组合数组的分割1.水平分割1.1hsplit函数1.2split函数2.垂直分割3.深度分割在介绍数组的组合和分割前,...
    99+
    2022-11-12
  • python的​PyPDF2实现pdf文件切割和合并
    今天想使用pdf的切分软件实现pdf文件的切分,但是软件需要会员???好吧,,,,又要会员,这么简单的功能能难倒咱们程序员吗。俗话说自给自足丰衣足食,决定使用python自己切分文件...
    99+
    2022-11-13
  • python中opencv实现文字分割的实践
    图片文字分割的时候,常用的方法有两种。一种是投影法,适用于排版工整,字间距行间距比较宽裕的图像;还有一种是用OpenCV的轮廓检测,适用于文字不规则排列的图像。 投影法 对文字图片作...
    99+
    2022-11-12
  • golang实现数组分割的示例代码
    需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。 示例1: 数组:[1, 2, 3, 4, 5, 6, 7,...
    99+
    2022-11-12
  • Java怎么实现PDF文件的分割与加密功能
    本篇内容主要讲解“Java怎么实现PDF文件的分割与加密功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现PDF文件的分割与加密功能”吧!加密文件  &nbs...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作