十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编给大家分享一下java实现文件归档和还原的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
丰都网站建设公司创新互联,丰都网站设计制作,有大型网站制作公司丰富经验。已为丰都上千多家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的丰都做网站的公司定做!
具体内容如下
基本思路:
文件归档,换句话就是把多个文件的字节存到一个文件中。为此我们必须定义存储格式,才能从包中把文件重新抽出来。
文件由文件名和内容组成。要想完整的还原文件,我们必须同时存下这两个东西,而文件名和内容的字节大小我们都是不知道的,为此我们必须要用固定大小的空间存储它们的大小。
存储格式
代码实现
因为文件内容大小是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); } }现象
成功在E:\waster\Archiver2文件夹生成了archive.bsm归档文件,并解档出1.txt 2.png 3.txt三个文件。
以上是“java实现文件归档和还原的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
网站栏目:java实现文件归档和还原的方法
转载源于:http://6mz.cn/article/jpogph.html