java中怎么实现文件归档和还原

本篇文章为大家展示了java中怎么实现文件归档和还原,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为广丰企业提供专业的网站制作、做网站,广丰网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

基本思路:

文件归档,换句话就是把多个文件的字节存到一个文件中。为此我们必须定义存储格式,才能从包中把文件重新抽出来。

文件由文件名和内容组成。要想完整的还原文件,我们必须同时存下这两个东西,而文件名和内容的字节大小我们都是不知道的,为此我们必须要用固定大小的空间存储它们的大小。

存储格式

代码实现

因为文件内容大小是4个字节(也就是int型),我们要把它存到文件,就要转化成字节数组。我们规定低位靠前,高位靠后。按照这种格式封装转换操作与一个基础类DataUtil中。

DataUtil代码

package util;public class DataUtil { public static byte[] int2bytes(int src) { byte[] rt = new byte[4]; for(int i=0; i<4; ++i) { rt[i] = (byte)(src>>(i*8)); } return rt; } public static int bytes2int(byte[] src) { int rt = 0; for(int i=0; i<4; ++i) { rt |= (src[i]&0xFF)<<(i*8); //字节在进行移位运算时,首先会被转换成int类型, //此时若字节的符号位为1,它前面就会补全1,比如: //0x80在byte类型时是-128,而转换成int,它的值还是 //-128,即0xffffff80,而我们移位运算想要的是 //0x00000080,即前面补全0,跟我们拆时一致。为此, //我们让它与0xFF相与,从0xffffff80变为0x00000080。 } return rt; }}

归档类

package wfb.binSama;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import util.DataUtil;/** * @author binSama */public class Archive {  public static void archive(File[] srcs,File tar) {//归档 try { FileOutputStream fos = new FileOutputStream(tar); for(int i=0; i

测试:

package wfb.binSama;import java.io.File;public class Test { @org.junit.Test public void test() { File[] files = new File[3]; files[0] = new File("E:\\waster\\Archiver1\\1.txt"); files[1] = new File("E:\\waster\\Archiver1\\2.png"); files[2] = new File("E:\\waster\\Archiver1\\3.txt"); File bsm = new File("E:\\waster\\Archiver2\\archive.bsm"); Archive.archive(files, bsm); Archive.unArchive(bsm); } }

上述内容就是java中怎么实现文件归档和还原,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


网页题目:java中怎么实现文件归档和还原
转载来源:http://azwzsj.com/article/ijhgcs.html