- 浏览: 183924 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
u010244357:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
Abird2Simba:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
javer 写道代码看着有点乱啊,怎么搞的 sorry,原来是 ...
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
代码看着有点乱啊,怎么搞的
如何在springMVC 中对REST服务使用mockmvc 做测试 -
u011643314:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试
自定义的数据结构在解包的过程中用到,没有这个数据结构的话,解包就无从谈起了!
好了,直接上代码!酷毙的程序员一切尽在代码中!
这里最重要的莫过于心里把握清楚,每一个信息占多少个自己。同时对java操作文件要掌握清楚,这个可以总结一下,FileInputStream 读文件的时候是有一个文件指针的,随着你的byte[] buf 往后面移动!不需要你去管理,知道这一定就清楚了,为什么不需要去标记代码中前面的len 后面写文件的时候不要用了!
基本如此。既然是打包的话当然需要压缩。文件压缩算法采取那种呢!还再思考中,写完后将继续发出来!谢谢!希望看的大神们留下思路!
好了,直接上代码!酷毙的程序员一切尽在代码中!
public static void testjie(String src,String newPath) throws Exception{ File file =new File(src); //byte[] by = new byte[6]; FileInputStream fis = new FileInputStream(file); int len =4 ; String head = readFirst(fis,len); //文件个数 int fileNum = readNext(fis, len, 1); len++; List<String> pathList = new ArrayList<String>(); List<Integer> inlist = new ArrayList<Integer>(); for (int i = 0; i < fileNum; i++) { //路径长度 int path_Len = readNext(fis, len, 1); len++; //文件大小 int file_size = readNext(fis, len, 4); len++; inlist.add(file_size); len= len+path_Len; String path = readOffStr(fis,len,path_Len); pathList.add(path.trim()); } System.out.println("len:"+len); System.out.println(pathList.toString()); System.out.println(inlist.toString()); List<String> newPathList = change2Disk( newPath, pathList); System.out.println("new path:"+newPathList.toString()); for (int j = 0; j <newPathList.size(); j++) { File targetFile = new File(newPathList.get(j).replace("\\", "/")); if(!targetFile.exists()){ System.out.println(targetFile.getPath()); String dir = targetFile.getParent(); System.out.println(dir); File dirfile = new File(dir); dirfile.mkdirs(); targetFile.createNewFile(); } OutputStream os = new FileOutputStream(targetFile); byte[] buf = new byte[1024]; //xuyao du de int need = inlist.get(j); int readed = 0; while (readed <need ) { if(need - readed <buf.length ) { int ret = fis.read(buf, 0, need - readed > buf.length ? buf.length :need - readed); os.write(buf); System.out.println(new String(buf)); if(ret <0 ) { }else { readed += ret; } } else{ int ret = fis.read(buf, 0, need - readed > buf.length ? buf.length :need - readed); os.write(buf); System.out.println(new String(buf)); if(ret <0 ) { }else { readed += ret; } } } os.close(); } fis.close(); }
这里最重要的莫过于心里把握清楚,每一个信息占多少个自己。同时对java操作文件要掌握清楚,这个可以总结一下,FileInputStream 读文件的时候是有一个文件指针的,随着你的byte[] buf 往后面移动!不需要你去管理,知道这一定就清楚了,为什么不需要去标记代码中前面的len 后面写文件的时候不要用了!
/** * 解压至--->newPath * @param newPath * @param pathList * @return */ public static List<String> change2Disk(String newPath, List<String> pathList) { List<String> newPathList = new ArrayList<String>(); for (int i = 0; i < pathList.size(); i++) { String path = pathList.get(i).replace("\\", "/"); String pathArr[] = path.split(":"); String realPath = newPath + pathArr[1]; newPathList.add(realPath); } return newPathList; }
/** * read len off ->len * 读一段从偏移位置开始读 * @param fis * @param off * @param len * @return buf -> int * @throws IOException */ public static int readNext(FileInputStream fis ,int off,int len) throws IOException{ off++; if(len==1){ byte [] buf = new byte[off+len]; fis.read(buf,off,len); int length = (int)buf[off]; System.out.println( "this readNext length is :"+length); return length; }else{ byte [] buf = new byte[off+len]; fis.read(buf,off,len); byte [] buf2 = new byte[4]; for(int i=buf.length-4;i<=buf.length;i++){ buf2[3]=buf[buf.length-1]; buf2[2]=buf[buf.length-2]; buf2[1]=buf[buf.length-3]; buf2[0]=buf[buf.length-4]; } System.out.println( "this readNext ==byte 2 int== length is :"+bytesToInt(buf2)); return bytesToInt(buf2); } }
基本如此。既然是打包的话当然需要压缩。文件压缩算法采取那种呢!还再思考中,写完后将继续发出来!谢谢!希望看的大神们留下思路!
发表评论
-
使用 cxf axis1.x axis2 开发WebService
2014-02-26 14:50 1346cxf======================== ... -
基于red5 dsj 的java 处理视频流和一些疑问
2013-06-19 16:17 5651最近夭折了一个项目,由于我预研失败,同时我将被惩罚,被外派去 ... -
5分钟 熟练使用spring Aop
2013-06-09 09:56 4835声明:所有的5分钟系列博客都停留在使用的基础上,具体原理, ... -
5分钟 玩转google Gson
2013-06-05 17:18 11028google gson 是一个非常轻量的java 对象与j ... -
如何在springMVC 中对REST服务使用mockmvc 做测试
2013-06-05 09:06 46845spring 集成测试中 对mock 的集成实在是太棒了! ... -
边读边写【7】 ----java 多线程实战【Thread /Executors】
2012-04-20 17:04 1808前面2个月一直忙碌,但是还是不忘在iteye 上发发帖子,写写 ... -
struts2 上传下载模板
2012-04-20 09:38 2791第一 struts2 更新比较慢。核心的xwork 基本不变。 ... -
struts2 上传下载模板
2012-04-18 22:21 0struts2下载文件时出错提示:java.lang.Clas ... -
java乱码补充 : 移植乱码 问题
2012-04-18 12:00 1632上一篇: jquery ajax struts2 数据库等中 ... -
jquery ajax struts2 数据库等中文乱码问题解决大全
2012-04-18 09:31 4857ok 乱码了。 乱码第一件事,静下心来,思考一下这乱码出处的 ... -
java 内存的管理 转载▼
2012-04-17 16:39 1512java 内存的管理 转载▼ 内存的管理(1) 使用Ja ... -
边读边写【6】 ----序列化和反序列化
2012-04-16 15:26 0边读边写【6】 ----序列化和反序列化 -
边读边写【5】 ----java 并发包
2012-04-09 15:09 0java 并发包里面的几个常用的东西 ConCurrentH ... -
边读边写【2】 ----java 集合包之深入Map
2012-04-09 11:49 0Collection 中还有一个Set 但是常用的Set 都是 ... -
边读边写【3】 ----java 集合包之各个集合性能分析
2012-04-10 09:38 1917上次主要看了Map接口,以及Map的选择地址: 。http:/ ... -
边读边写【1】 ----java 集合包之深入List
2012-04-09 11:14 2591一、java 集合包最常用 ... -
hadoop的1TB排序
2012-04-09 09:22 1448hadoop的1TB排序 作者:nos ... -
java 调用lame.exe 将 wav 进行MP3压缩的一些问题
2012-03-05 10:24 5754首先下载附件 lame.exe copy到d 盘,因为代码默认 ... -
使用DES 加密方式对文件进行加密!!!
2012-01-14 17:07 8051DES加密由于在java中非常 ... -
java 大小端存储模式 转化
2012-01-14 16:52 14555所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据 ...
相关推荐
【mstar系列ROM解包打包工具】是一款专为乐视超级电视系统设计的工具,它能够对系统的ROM进行解包和打包操作,对于那些希望自定义或优化电视系统的人来说,是必不可少的工具。在这个过程中,我们可以深入理解ROM的...
在描述中提到的"自定义8583模板,打包解包",是指根据实际业务需求定制ISO8583消息结构,并对这些消息进行编码(打包)和解码(解包)的过程。 `j8583`是一个Java库,用于处理ISO8583消息。它提供了一种方式来定义...
8. **编程知识**:虽然使用现成的解包工具可以简化工作,但如果你需要自定义工具或扩展功能,那么掌握至少一种编程语言(如Python、C++或Java)是必要的。 9. **版本控制**:在处理大量资源文件时,使用版本控制...
相反,将这些组合的数据结构拆分成原始的位序列,则称为解包。 数目可变的位打包和解包主要涉及处理不同长度的数据元素。例如,在网络通信中,协议可能需要发送不同长度的数字,如IP地址(32位)、端口号(16位)或...
这个过程可能需要对二进制文件、数据结构和加密原理有一定的了解。 在提供的压缩包文件中,“RPG-Maker-MV-Decrypter-master”很可能是项目源代码的主目录,包含了所有必要的代码和文件来运行解密程序。"5"和"A...
在IT领域,固件是设备或硬件上的操作系统,它提供了底层控制和管理功能,使得硬件能够执行特定的任务。固件解包工具则是针对这些固件文件进行分析、提取和修改的专业软件,通常用于开发者和研究人员对应用软件或者...
asn.1的核心在于它提供了一种独立于特定编程语言或机器的语法来描述数据结构。它使用一套规则来定义数据类型,如整数、字符串、序列和选择,使得不同系统之间可以交换和理解结构化数据。asn.1包括以下几个主要概念:...
本篇文章将深入探讨Java中解析和生成JSON的类库,并介绍如何使用它们进行数据转换。 ### JSON的基本结构 JSON基于JavaScript语法,但并不依赖JavaScript执行环境。其基本结构包括对象(Object)和数组(Array)。...
在Java中,这通常涉及到使用特定的库或自定义类来模拟ARP协议的数据结构。ARPPacket可能是一个自定义类,用于封装ARP请求或应答的各个字段,如发送者的IP和MAC地址、接收者的IP和MAC地址以及协议类型等。 从标签...
总的来说,通过使用“Android apk包解压逆向工具”,开发者和安全研究员可以深入了解APK的内部结构,从而进行各种分析任务,如性能优化、漏洞检测或恶意行为检测。这种工具和方法在Android应用开发、调试和安全领域...
在这个项目中,可能使用了自定义的数据结构或标准的序列化库来打包和解包消息。 6. **用户界面**:客户端应用可能包含图形用户界面(GUI),使用Java的Swing或JavaFX库来构建。GUI提供友好的交互方式,使用户能够...
如果需要动态加载,可以自定义类加载器,根据需要加载特定的`jar`包。 4. **卸载**:Java运行时环境中,一旦类被加载,就无法直接卸载。然而,可以通过替换`jar`包或改变类加载器的策略来达到类似的效果。例如,...
这些工具帮助开发者和爱好者处理OTA(Over-the-Air)升级包或系统映像,以便进行自定义修改、调试或恢复。 OTA升级是设备通过网络接收软件更新的一种方式,对于Android系统来说,它通常以ZIP格式提供,包含各种文件...
本文将深入探讨Resource格式,解析它的结构,并讲解如何解包Resource文件,以供开发者进行逆向工程或自定义处理。 Resource文件的核心在于Android资源系统,它负责管理和加载应用中的各种资源。资源文件在编译时会...
Java的`ObjectOutputStream`和`ObjectInputStream`类可以用来序列化和反序列化对象,使得服务器和客户端能交换自定义的数据结构。 6. **事件驱动编程**:为了实现即时的用户交互,聊天室可能使用Java的事件监听机制...
- 数据结构和算法在聊天应用中的应用,如消息队列 通过分析和理解这个项目的源码,不仅可以提高Java编程技能,还能深入理解网络编程和即时通讯应用的工作原理,对于想从事相关领域开发的程序员来说是一次宝贵的实践...
APK解析器是一个工具,它允许开发者解包和分析APK文件的内部结构,以便获取诸如应用元数据、资源文件、权限列表等信息。通过Java实现的APK解析器,开发者可以在Java环境中进行操作,无需依赖其他平台或语言。 2. *...
- **NB0解包与打包**:NB0格式是特定设备的固件或操作系统映像的一种封装方式,解包和打包是修改ROM的关键步骤。通过解包可以访问并修改其中的文件和配置,打包则是将修改后的文件重新封装为NB0格式。 - **镜像文件...
4. **数据结构**:为了存储棋盘状态和棋子信息,可以使用二维数组或者自定义的数据结构,如棋盘类,其中包含每个位置的棋子对象。 5. **算法与逻辑**:游戏的核心部分是实现象棋规则的算法。例如,检查是否合法移动...