精华内容
下载资源
问答
  • map接口中的put(k,v)方法中的v参数要求的是对象的,其一般用法:import java.util.*;public class TestMap {public static void main(String args[]) {Map m1 = new HashMap();m1.put("one",new Integer(1));//v参数...

    map接口中的put(k,v)方法中的v参数要求的是对象的,其一般用法:

    import java.util.*;

    public class TestMap {

    public static void main(String args[]) {

    Map m1 = new HashMap();

    m1.put("one",new Integer(1));//v参数是整形对象对象

    m1.put("two",new Integer(2));

    m1.put("three",new Integer(3));

    System.out.println(m1);

    if(m1.containsKey("two")) {

    int i = ((Integer)m1.get("two")).intValue();//强制转换为整形对象在得出值

    System.out.println(i);

    }

    }

    }

    利用自动打包和解包就很方便了:

    import java.util.*;

    public class TestMap {

    public static void main(String args[]) {

    Map m1 = new HashMap();

    m1.put("one", 1);//自动打包,注意与上面代码的区别

    m1.put("two", 2);

    m1.put("three", 3);

    System.out.println(m1)

    if(m1.containsKey("two")) {

    int i = (Integer)m1.get("two");//自动解包

    System.out.println(i);

    }

    }

    }

    题外话:强制转换的存在,导致了泛型的出现。

    展开全文
  • java打包和解包

    2011-04-22 14:20:56
    java"]package com.test.xml; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;.....
    package com.test.xml;

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;

    public class ZipManager {

    /**
    *
    * @param baseDir
    * 所要压缩的目录名(包含绝对路径)
    * @param objFileName
    * 压缩后的文件名
    * @throws Exception
    */
    public void createZip(String baseDir, String objFileName) throws Exception {
    File folderObject = new File(baseDir);

    if (folderObject.exists()) {
    List fileList = getSubFiles(new File(baseDir));

    // 压缩文件名
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
    objFileName));

    ZipEntry ze = null;
    byte[] buf = new byte[1024];
    int readLen = 0;
    for (int i = 0; i < fileList.size(); i++) {
    File f = (File) fileList.get(i);
    System.out.println("Adding: " + f.getPath() + f.getName());

    // 创建一个ZipEntry,并设置Name和其它的一些属性
    ze = new ZipEntry(getAbsFileName(baseDir, f));
    ze.setSize(f.length());
    ze.setTime(f.lastModified());

    // 将ZipEntry加到zos中,再写入实际的文件内容
    zos.putNextEntry(ze);
    InputStream is = new BufferedInputStream(new FileInputStream(f));
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    zos.write(buf, 0, readLen);
    }
    is.close();
    System.out.println("done...");
    }
    zos.close();
    } else {
    throw new Exception("this folder isnot exist!");
    }
    }

    /**
    * zip压缩功能测试. 将指定文件压缩后存到一压缩文件中
    *
    * @param sourceFileName
    * 所要压缩的文件名
    * @param zipFilename
    * 压缩后的文件名
    * @return 压缩后文件的大小
    * @throws Exception
    */
    public long createFileToZip(String zipFilename, String sourceFileName)
    throws Exception {

    File sourceFile = new File(sourceFileName);

    byte[] buf = new byte[1024];

    // 压缩文件名
    File objFile = new File(zipFilename);

    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(objFile));

    ZipEntry ze = null;
    // 创建一个ZipEntry,并设置Name和其它的一些属性
    ze = new ZipEntry(sourceFile.getName());
    ze.setSize(sourceFile.length());
    ze.setTime(sourceFile.lastModified());

    // 将ZipEntry加到zos中,再写入实际的文件内容
    zos.putNextEntry(ze);

    InputStream is = new BufferedInputStream(
    new FileInputStream(sourceFile));

    int readLen = -1;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    zos.write(buf, 0, readLen);
    }
    is.close();
    zos.close();

    return objFile.length();
    }

    /**
    * 压缩多个文件
    * @param zipFileName
    * 要压缩后的压缩文件名
    * @param lstFileName
    * 要压缩的文件名集合
    *
    * @return 压缩后文件大小
    * @throws Exception
    */
    public long createFileToZip(String zipFileName, List<String> lstFileName) throws Exception {
    File objFile = new File(zipFileName);
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
    objFile));

    if (lstFileName != null) {
    for (int i = 1; i < lstFileName.size(); i++) {
    File sourceFile = new File(lstFileName.get(i));

    byte[] buf = new byte[1024];

    ZipEntry ze = null;
    // 创建一个ZipEntry,并设置Name和其它的一些属性
    ze = new ZipEntry(sourceFile.getName());
    ze.setSize(sourceFile.length());
    ze.setTime(sourceFile.lastModified());

    // 将ZipEntry加到zos中,再写入实际的文件内容
    zos.putNextEntry(ze);

    InputStream is = new BufferedInputStream(new FileInputStream(
    sourceFile));

    int readLen = -1;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    zos.write(buf, 0, readLen);
    }
    is.close();
    }

    zos.close();
    }

    return objFile.length();
    }

    /**
    * zip压缩功能测试. 将指定文件压缩后存到一压缩文件中
    *
    * @param sourceFile
    * 所要压缩的文件名
    * @param zipFile
    * 压缩后的文件名
    * @return 压缩后文件的大小
    * @throws Exception
    */
    public long createFileToZip(File sourceFile, File zipFile)
    throws IOException {

    byte[] buf = new byte[1024];

    // 压缩文件名
    File objFile = zipFile;

    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(objFile));

    ZipEntry ze = null;
    // 创建一个ZipEntry,并设置Name和其它的一些属性
    ze = new ZipEntry(sourceFile.getName());
    ze.setSize(sourceFile.length());
    ze.setTime(sourceFile.lastModified());

    // 将ZipEntry加到zos中,再写入实际的文件内容
    zos.putNextEntry(ze);

    InputStream is = new BufferedInputStream(
    new FileInputStream(sourceFile));

    int readLen = -1;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    zos.write(buf, 0, readLen);
    }
    is.close();
    zos.close();

    return objFile.length();
    }

    /**
    * @param sourceZip
    * 要解压的文件名
    * @param ourFileName
    * 解压后的文件路径
    *
    * @throws IOException
    */
    public void releaseZipToFile(String sourceZip, String outFileName)
    throws IOException {
    ZipFile zfile = new ZipFile(sourceZip);
    System.out.println(zfile.getName());
    Enumeration zList = zfile.entries();
    ZipEntry ze = null;
    byte[] buf = new byte[1024];
    while (zList.hasMoreElements()) {
    // 从ZipFile中得到一个ZipEntry
    ze = (ZipEntry) zList.nextElement();
    if (ze.isDirectory()) {
    continue;
    }
    // 以ZipEntry为参数得到一个InputStream,并写到OutputStream中
    OutputStream os = new BufferedOutputStream(new FileOutputStream(
    getRealFileName(outFileName, ze.getName())));
    InputStream is = new BufferedInputStream(zfile.getInputStream(ze));
    int readLen = 0;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    os.write(buf, 0, readLen);
    }
    is.close();
    os.close();
    System.out.println("Extracted: " + ze.getName());
    }
    zfile.close();

    }

    /**
    * 取得指定目录下的所有文件列表,包括子目录.
    *
    * @param baseDir
    * File 指定的目录
    * @return 包含java.io.File的List
    */
    private List getSubFiles(File baseDir) {
    List ret = new ArrayList();
    // File base=new File(baseDir);
    File[] tmp = baseDir.listFiles();
    for (int i = 0; i < tmp.length; i++) {
    if (tmp[i].isFile()) {
    ret.add(tmp[i]);
    }
    if (tmp[i].isDirectory()) {
    ret.addAll(getSubFiles(tmp[i]));
    }
    }
    return ret;
    }

    /**
    * 给定根目录,返回一个相对路径所对应的实际文件名.
    *
    * @param baseDir
    * 指定根目录
    * @param absFileName
    * 相对路径名,来自于ZipEntry中的name
    * @return java.io.File 实际的文件
    */
    private File getRealFileName(String baseDir, String absFileName) {
    String[] dirs = absFileName.split("/");
    // System.out.println(dirs.length);
    File ret = new File(baseDir);
    // System.out.println(ret);
    if (dirs.length > 1) {
    for (int i = 0; i < dirs.length - 1; i++) {
    ret = new File(ret, dirs[i]);
    }
    }
    if (!ret.exists()) {
    ret.mkdirs();
    }
    ret = new File(ret, dirs[dirs.length - 1]);
    return ret;
    }

    /**
    * 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径.
    *
    * @param baseDir
    * java.lang.String 根目录
    * @param realFileName
    * java.io.File 实际的文件名
    * @return 相对文件名
    */
    private String getAbsFileName(String baseDir, File realFileName) {
    File real = realFileName;
    File base = new File(baseDir);
    String ret = real.getName();
    while (true) {
    real = real.getParentFile();
    if (real == null)
    break;
    if (real.equals(base))
    break;
    else {
    ret = real.getName() + "/" + ret;
    }
    }
    System.out.println("TTTTT" + ret);
    return ret;
    }

    public void testReadZip() throws Exception {
    String baseDir = "d:\\temp\\zipout";
    ZipFile zfile = new ZipFile("d:\\download\\src.zip");
    System.out.println(zfile.getName());
    Enumeration zList = zfile.entries();
    ZipEntry ze = null;
    byte[] buf = new byte[1024];
    while (zList.hasMoreElements()) {
    // 从ZipFile中得到一个ZipEntry
    ze = (ZipEntry) zList.nextElement();
    if (ze.isDirectory()) {
    continue;
    }
    // 以ZipEntry为参数得到一个InputStream,并写到OutputStream中
    OutputStream os = new BufferedOutputStream(new FileOutputStream(
    getRealFileName(baseDir, ze.getName())));
    InputStream is = new BufferedInputStream(zfile.getInputStream(ze));
    int readLen = 0;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
    os.write(buf, 0, readLen);
    }
    is.close();
    os.close();
    System.out.println("Extracted: " + ze.getName());
    }
    zfile.close();
    }

    public static void main(String args[]) {
    ZipManager manager = new ZipManager();
    long l = 0;
    try {
    // manager.createZip("E:\\Test Zip", "E:\\Test Zip.rar");
    manager.releaseZipToFile("E:\\Test Zip.rar", "E:\\Test");
    } catch (Exception e) {
    }
    System.out.println("Result=" + l);
    }

    }
    展开全文
  • java打包和解包命令

    2010-12-28 10:53:33
    制作一个可执行的 JAR 文件 1)文件路径  |-- test  | `-- Test.class  `-- manifest.mf (包含Main-...2)--打包 jar cvf a.jar Test.class --增加manifest.mf 配置 jar cvfm a.jar MANIFEST.MF...

    制作一个可执行的 JAR 文件

    1)文件路径

      |-- test

      |  `-- Test.class

      `-- manifest.mf  (包含Main-Class: Test 一行,且该行以一个回车符结束即可)

    2)--打包

    jar cvf a.jar Test.class

    --增加manifest.mf  配置

    jar cvfm a.jar  MANIFEST.MF Test.class

    3)--执行

      java -jar a.jar
    4)--显示信息
    jar tvf a.jar

    jar tf a.jar
    5)--解压命令
    jar xvf a.jar

    展开全文
  • pak文件打包和解包

    千次阅读 2019-09-24 17:18:16
    pak格式的文件 一般游戏有资源 游戏素材会打包放进去 比如游戏语音 游戏多加点语音 多加一些贴图资源 外部文件实现的 素材--->pak文件--->用的时候从文件中取出来 文件打包 1 #include<iostream&...

    pak格式的文件 一般游戏有资源 游戏素材会打包放进去

    比如游戏语音 游戏多加点语音  多加一些贴图资源

    外部文件实现的

    素材--->pak文件--->用的时候从文件中取出来

    文件的打包

     1 #include<iostream>
     2 #include<fstream>//观于文件的头函数
     3 using namespace std;
     4 
     5 struct fileInfo
     6 {
     7     int fileSize;//文件大小
     8     int fileOff;//文件在pak中的偏移
     9     int fileNameSize;//文件名的长度
    10     char* fileName;//文件名
    11 };
    12 int main()
    13 {
    14     fileInfo pic[4] = { { 0, 0, 0, "背景.jpg" }, { 0, 0, 0, "人物.jpg" }, { 0, 0, 0, "箱子.jpg" }, { 0, 0, 0, "目的地.jpg" } };
    15     //初始化结构体 给结构体内存放数据
    16     int listNum = 4, listSize = 8;
    17 
    18     fstream resFile[4];//源文件
    19     fstream srcFile;//打包之后的文件
    20     for (int i = 0; i < 4; i++)
    21     {
    22         resFile[i].open(pic[i].fileName, ios::in | ios::binary);//打开文件 文本或二进制文件
    23         resFile[i].seekg(0, ios::end);//将文件指针移动到文件末尾end
    24         pic[i].fileSize = resFile[i].tellg();//得到文件的大小tellg
    25         pic[i].fileNameSize = strlen(pic[i].fileName);//求文件名长度
    26         listSize += 4 + 4 + 4 + pic[i].fileNameSize;//加上单条索引表的长度
    27         // 文件大小4  +文件偏移量4+ 文件名大小4 +文件名长度
    28     }
    29     for (int i = 0; i < 4; ++i)
    30     {
    31         if (i == 0)//第一个文件
    32         {
    33             pic[i].fileOff = listSize;//第一个文件的偏移量就是索引表大小
    34         }
    35         else
    36         {
    37             pic[i].fileOff = pic[i - 1].fileOff + pic[i - 1].fileSize;
    38             //计算后面的文件偏移量
    39         }
    40     }
    41     srcFile.open("new.pak", ios::out | ios::binary);//准备写入文件
    42 
    43     srcFile.write((char*)&listSize, sizeof(int));//写入索引表的大小和索引表的个数
    44     srcFile.write((char*)&listNum, sizeof(int));
    45 
    46     for (int i = 0; i < 4; ++i)//写索引表
    47     {
    48         srcFile.write((char*)&pic[i].fileSize, sizeof(int));
    49         srcFile.write((char*)&pic[i].fileOff, sizeof(int));
    50         srcFile.write((char*)&pic[i].fileNameSize, sizeof(int));
    51         srcFile.write(pic[i].fileName, pic[i].fileNameSize);
    52     }
    53 
    54     for (int i = 0; i < 4; ++i)//写入文件内容
    55     {
    56         resFile[i].seekg(0, ios::beg);//将文件指针移动到文件开头
    57         while (!resFile[i].eof())//写文件
    58         {
    59             srcFile.put(resFile[i].get());
    60         }
    61         srcFile.seekp(-1, ios::cur);//删掉一个字节  避免多写入数据
    62         resFile[i].close();//写完关闭
    63     }
    64 
    65     srcFile.close();
    66 
    67 
    68     cin.get();
    69     return 0;
    70 }

    //运行后将文件打包到new.pak中

    文件的解包

     1 #include<iostream>
     2 #include<fstream>
     3 using namespace std;
     4 
     5 struct fileInfo
     6 {
     7     int fileSize;//文件大小
     8     int fileOff;//文件在pak中的偏移
     9     int fileNameSize;//文件名的长度
    10     char fileName[128];//文件名
    11 };
    12 
    13 
    14 int main()
    15 {
    16     fstream file;
    17     file.open("new.pak", ios::in | ios::binary);//读取文件
    18     fileInfo pic[4];//写文件的时候大小可能不止四个  
    19     int listSize, listNum;// Num是索引表的个数
    20 
    21     file.read((char*)&listSize, sizeof(int));//读到索引表的大小
    22     file.read((char*)&listNum, sizeof(int));
    23 
    24     //读取每条索引的内容
    25     for (int i = 0; i < listNum; ++i)
    26     {
    27         file.read((char*)&pic[i].fileSize, sizeof(int));
    28         file.read((char*)&pic[i].fileOff, sizeof(int));
    29         file.read((char*)&pic[i].fileNameSize, sizeof(int));
    30         file.read(pic[i].fileName, pic[i].fileNameSize);//需要注意\0
    31         pic[i].fileName[pic[i].fileNameSize] = '\0';
    32         cout << i << "个文件的内容------------------" << endl;
    33         cout << pic[i].fileSize << endl;
    34         cout << pic[i].fileOff << endl;
    35         cout << pic[i].fileNameSize << endl;
    36         cout << pic[i].fileName << endl;
    37     }
    38     fstream res[4];//大小其实用vector或者new好一点   listNum
    39 
    40 
    41     //前面有文件大小和文件偏移量  如果读取特定的文件 可以直接用索引中的大小和偏移量读取
    42     for (int i = 0; i < listNum; ++i)
    43     {
    44         res[i].open(pic[i].fileName, ios::out | ios::binary);
    45         for (int j = 0; j < pic[i].fileSize; ++j)
    46         {
    47             res[i].put(file.get());
    48         }
    49         res[i].close();
    50     }
    51 
    52 
    53     file.close();//关闭文件
    54     cin.get();
    55     return 0;
    56 }

    //运行exe文件将图片文件解包

     

    转载于:https://www.cnblogs.com/liugangjiayou/p/11388142.html

    展开全文
  • 在百度上搜了半天也没有找到一个合适的,有的不能操作文件夹,有的不能操作单个文件,有的不支持中文,总之没有找到合适的(也可能是自己搜索的能力差一些),只好自己写一个,主要代码如下: public static void ...
  • ubuntu 文件打包解包

    千次阅读 2018-01-06 15:38:18
     tar jcv -f store.tar.bz2 /store z (gzip)  j (bzip2)分别是两种压缩方式, 记录一下我用到的方式 tar xvf 压缩文件名    -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加...
  • jeesite 项目打包和解包及遇到的问题

    千次阅读 2019-01-14 17:14:12
    jeesite 项目打包和解包 确保项目在eclipse上正常运行; 正式服务器jdk1.8及数据库环境已经具备 配置系统环境变量JAVA_HOME指定jdk1.8路径,注意不要包含空格 执行bin/package.bat(.sh)进行打成war包文件,并将...
  • 打包:自动将基础类型转换成相应的对象 解包:自动将对象转换成相应的基础类型 在合适的时机进行。 注: 一、必须是相应的基础类型对象,Object型无法转换。 如:java.tuil.*:包里。假设HashMap包中value为基础...
  • Linux下存在多个文件压缩工具,上面我们介绍了包括bzip2、gzipzip。针对这三种压缩工具生成的压缩包,我们可以使用bunzip2、gunzipunzip命令对其进行解压缩。 可以-d指定路径。 tar命令也可以用来解压缩。 因为...
  • 原文:APK文件使用ApkTool解包反编译重新打包及签名 地址:http://429006.com/article/technology/3420.htm 1. 准备工作: 配置JAVA环境,到http://www.java.com/下载并进行安装,如已安装的可忽略 ...
  • 输入mdb数据库即可将打包的mdb文件解包
  • 文章目录一、zip格式(一)压缩示例(二)解压示例二、tar格式(一)打包示例(二)解包示例三、tar.gz格式tar.bz2格式方式一:利用已经打包好的tar文件,直接执行压缩命令tar.xz格式tar.Z格式(已过时)jar格式7z...
  • 相信每位玩机的人对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装卸载有用的应用工具、插件...本文介绍APK的基本知识、结构、APK文件解包打包及签名,以及对APK文件的常规修改。 1.APK文件简...
  • struct编程-打包解包

    2019-04-24 09:28:17
    struct用于不同语言中的数据类型...1、打包,示例: import struct a = 20 b = 400 str = struct.pack('ii',a,b) # 标识符'i'表示转换为int,'ii'表示两个int变量, print('length:',len(str)) #转换后结果长度为...
  • 下面刷机帮的小编就给大家介绍一下APK文件解包打包以及对APK文件的常规修改,有兴趣的朋友可以来一些看看。1、什么是APK文件APK是AndroidPackage的缩写,也就是Androidapplicationpackage文件...
  • APK文件简介 及 解包 打包 工具 介绍

    万次阅读 2012-08-28 11:26:38
    每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中...
  • package ... import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util...
  • ◈ 在适合的时机自动打包解包 打包:自动将基础类型转换为对象 解包:自动将对象转换为基础类型 原程序import java.util.*; public class Test { public static void main(String[] args) { Map m1 = new ...
  • 相信每位玩机的人对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装卸载有用的应用...本文介绍APK的基本知识、结构、APK文件解包打包及签名,以及对APK文件的常规修改。 1.APK文件简介 APK是An
  • 创建消息工厂 读取配置文件 配置文件对应文档上完全不一样 谁做过求指点下 ![图片说明](https://img-ask.csdn.net/upload/201706/08/1496905902_517141.png) ![图片说明]...
  • APK文件解包打包和修改 相信每位玩机的人对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装卸载有用的应用工具、插件、好玩的游戏等等。。。你可曾知道这些每天都伴随着你的APK文件是什么吗?怎样...
  • 前言 ...现在知道在网络传输的时候,总时要传输字节流的,比如一个int64类型的数据,如果打包成字节数组,又如何字节数组中解包出来呢? Int64变量转字节数组 C#的扩展方法如下: public static ...
  • android apk解包和打包

    万次阅读 2019-04-26 16:22:11
    最近项目开发,我的jar包资源文件给别的同事打包,这样我自己测试很麻烦,每次改一点东西都要找人打包测试,很麻烦,就想着能够解包,更新一下自己的部分代码,再打包apk直接测试。后来找了一些网上内容,也没那么...
  • APK文件解包修改重打包签名

    千次阅读 2013-01-18 16:13:47
    本文介绍APK的基本知识、结构、APK文件解包打包及签名,以及对APK文件的常规修改。 一、APK文件简介 APK 是Android Package的缩写,即即Android application package文件或Android安装包。每个要
  • apktool工具基本使用 解包和打包操作

    千次阅读 2019-11-18 11:41:00
    它可以完整解包 APK,解包后你可以看到 APK 里面的声明文件、布局文件、图片资源文件、由 dex 解包出来的 smali 文件、语言文件等。如果你要汉化、修改界面、修改代码的话,apktool 可以帮你一站式完成。 常用命令 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,425
精华内容 2,970
关键字:

java文件的打包和解包

java 订阅