`
shuai1234
  • 浏览: 978066 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

java打包linux文件 .

    博客分类:
  • java
 
阅读更多
01.   前几天写了文章介绍java文件夹的压缩(见http://zwllxs.javaeye.com/blog/836483),但是发现一个问题,在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文件名全部成为了乱码而无法解压,要能支持linux压缩,有两点:    
02.1:再压缩前,要设置linux模式,   
03.  如果是文件目录,则   
04.Java代码   
05.ZipEntry zipEntry=new ZipEntry(basePath + System.getProperties().getProperty("file.separator"));     
06.zipEntry.setUnixMode(755);//解决linux乱码     
07.  
08.ZipEntry zipEntry=new ZipEntry(basePath + System.getProperties().getProperty("file.separator"));  
09.zipEntry.setUnixMode(755);//解决linux乱码   
10.如果是文件,则   
11.Java代码   
12.ZipEntry zipEntry=new ZipEntry(base);     
13. zipEntry.setUnixMode(644);//解决linux乱码     
14.  
15.ZipEntry zipEntry=new ZipEntry(base);  
16. zipEntry.setUnixMode(644);//解决linux乱码   
17.  
18.然后在输出时强制设置编码:   
19.Java代码   
20.ZipOutputStream out = new ZipOutputStream(new FileOutputStream(     
21.               zipFileName));     
22.       out.setEncoding("GBK");//解决linux乱码     
23.  
24. ZipOutputStream out = new ZipOutputStream(new FileOutputStream(  
25.                zipFileName));  
26.        out.setEncoding("GBK");//解决linux乱码   
27.  
28.全部代码如下:   
29.  
30.Java代码   
31.import java.io.File;     
32.import java.io.FileInputStream;     
33.import java.io.FileOutputStream;     
34.import java.io.OutputStream;     
35.    
36.import org.apache.tools.zip.ZipEntry;     
37.import org.apache.tools.zip.ZipOutputStream;     
38.    
39./**   
40. * 文件夹压缩,支持win和linux   
41. * @author wlzhang   
42. *   
43. */    
44.public class ZipUtil     
45.{     
46.    /**   
47.     * @param inputFileName   
48.     *            输入一个文件夹   
49.     * @param zipFileName   
50.     *            输出一个压缩文件夹,打包后文件名字   
51.     * @throws Exception   
52.     */    
53.    public static OutputStream zip(String inputFileName, String zipFileName) throws Exception     
54.    {     
55.        return zip(zipFileName, new File(inputFileName));     
56.    }     
57.    
58.    private static OutputStream zip(String zipFileName, File inputFile) throws Exception     
59.    {     
60.        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(     
61.                zipFileName));     
62.        out.setEncoding("GBK");//解决linux乱码      
63.        zip(out, inputFile, "");     
64.        out.close();     
65.        return out;     
66.    }     
67.    
68.    private static void zip(ZipOutputStream out, File f, String base) throws Exception     
69.    {     
70.        if (f.isDirectory())     
71.        { // 判断是否为目录      
72.            File[] fl = f.listFiles();     
73.            // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));      
74.//            out.putNextEntry(new ZipEntry(base + "/"));      
75.            ZipEntry zipEntry=new ZipEntry(base + System.getProperties().getProperty("file.separator"));     
76.            zipEntry.setUnixMode(755);//解决linux乱码      
77.            out.putNextEntry(zipEntry);     
78.//            base = base.length() == 0 ? "" : base + "/";      
79.            base = base.length() == 0 ? "" : base + System.getProperties().getProperty("file.separator");     
80.            for (int i = 0; i < fl.length; i++)     
81.            {     
82.                zip(out, fl[i], base + fl[i].getName());     
83.            }     
84.        }     
85.        else    
86.        { // 压缩目录中的所有文件      
87.            // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));      
88.            ZipEntry zipEntry=new ZipEntry(base);     
89.            zipEntry.setUnixMode(644);//解决linux乱码      
90.            out.putNextEntry(zipEntry);     
91.            FileInputStream in = new FileInputStream(f);     
92.            int b;     
93.            while ((b = in.read()) != -1)     
94.            {     
95.                out.write(b);     
96.            }     
97.            in.close();     
98.        }     
99.    }     
100.}    
101.  
102.import java.io.File;  
103.import java.io.FileInputStream;  
104.import java.io.FileOutputStream;  
105.import java.io.OutputStream;  
106.  
107.import org.apache.tools.zip.ZipEntry;  
108.import org.apache.tools.zip.ZipOutputStream;  
109.  
110./** 
111. * 文件夹压缩,支持win和linux 
112. * @author wlzhang 
113. * 
114. */  
115.public class ZipUtil  
116.{  
117.    /** 
118.     * @param inputFileName 
119.     *            输入一个文件夹 
120.     * @param zipFileName 
121.     *            输出一个压缩文件夹,打包后文件名字 
122.     * @throws Exception 
123.     */  
124.    public static OutputStream zip(String inputFileName, String zipFileName) throws Exception  
125.    {  
126.        return zip(zipFileName, new File(inputFileName));  
127.    }  
128.  
129.    private static OutputStream zip(String zipFileName, File inputFile) throws Exception  
130.    {  
131.        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(  
132.                zipFileName));  
133.        out.setEncoding("GBK");//解决linux乱码   
134.        zip(out, inputFile, "");  
135.        out.close();  
136.        return out;  
137.    }  
138.  
139.    private static void zip(ZipOutputStream out, File f, String base) throws Exception  
140.    {  
141.        if (f.isDirectory())  
142.        { // 判断是否为目录   
143.            File[] fl = f.listFiles();  
144.            // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));   
145.//            out.putNextEntry(new ZipEntry(base + "/"));   
146.            ZipEntry zipEntry=new ZipEntry(base + System.getProperties().getProperty("file.separator"));  
147.            zipEntry.setUnixMode(755);//解决linux乱码   
148.            out.putNextEntry(zipEntry);  
149.//            base = base.length() == 0 ? "" : base + "/";   
150.            base = base.length() == 0 ? "" : base + System.getProperties().getProperty("file.separator");  
151.            for (int i = 0; i < fl.length; i++)  
152.            {  
153.                zip(out, fl[i], base + fl[i].getName());  
154.            }  
155.        }  
156.        else  
157.        { // 压缩目录中的所有文件   
158.            // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));   
159.            ZipEntry zipEntry=new ZipEntry(base);  
160.            zipEntry.setUnixMode(644);//解决linux乱码   
161.            out.putNextEntry(zipEntry);  
162.            FileInputStream in = new FileInputStream(f);  
163.            int b;  
164.            while ((b = in.read()) != -1)  
165.            {  
166.                out.write(b);  
167.            }  
168.            in.close();  
169.        }  
170.    }  
171.}  
172.  
173.以上代码就同时支持win和linux   

 

分享到:
评论

相关推荐

    linux_java_opencv_4.5.1.zip

    服务器是centos环境,jar包是跨平台的,但是dll不能,所以只能下载最新版的opencv源码,进行编译安装,并且打包成静态文件,大家只需要把libopencv_java451.so放到 java.library.path下面就行了

    linux下javaSwing开发的jar包CS打包完整步骤.docx

    在Linux环境下,使用Java Swing开发的应用程序通常被打包成可执行的jar文件,便于分发和执行。然而,为了更好地适应Linux系统,尤其是国产化操作系统,开发者可能希望将jar包进一步封装成DEB(Debian Package)...

    linuxJava8_32.tar.zip

    描述中提到,用户在下载这个文件后,会得到一个名为“linuxJava8_32.tar.gz”的tar.gz格式文件,这提示我们它采用的是双重压缩,首先用zip压缩,然后将zip文件再用tar打包。在Linux环境中,可以使用tar命令来解压这...

    eclipse-inst-linux64.tar.gz

    "tar.gz"是Linux中常见的文件打包和压缩格式,它结合了tar(用于打包多个文件到一个文件)和gzip(用于压缩文件)两种工具的功能。因此,我们需要使用相应的命令来处理这个文件。 1. **下载与验证**:通常,你可以...

    Linux上执行带main方法的java文件

    然而,在Linux服务器部署场景中,则需要采取其他方式,即先将Java项目打包成JAR文件,再利用命令行来启动执行。 #### 打包Java项目为JAR文件 在Linux服务器上执行Java项目时,通常的做法是先将项目打包成JAR文件。...

    linux下java环境gdal编译好的文件

    在Linux上部署Java应用时,如果使用了GDAL,确保这些库文件在系统路径中可用或者与Java应用一起打包。对于动态链接库,可能需要设置`LD_LIBRARY_PATH`环境变量,以便系统能够找到它们。静态库则在编译时链接,不需要...

    如何把一个java程序打包成exe文件.doc

    ### 如何将Java程序打包成EXE文件 在软件开发领域,尤其是对于Java开发者来说,将Java程序打包成EXE文件是一种常见的需求。这不仅可以让程序在没有安装Java运行环境(JRE)的计算机上运行,还能提高程序的安全性和...

    通过install4j打包Java程序.rar

    在使用install4j进行Java程序打包时,主要涉及以下几个步骤: 1. **安装与启动install4j**:首先,你需要从官方网站下载并安装install4j。安装完成后,启动install4j集成开发环境(IDE)。 2. **创建新项目**:...

    Java JDK11.0.22.tar.gz下载(Linux)

    - `jar`: 打包和管理Java档案文件的工具,常用于创建可执行的`.jar`文件。 - `jps`: 显示正在运行的Java进程。 - `jmap`: 用于生成堆转储文件和查看内存映射。 - `jhat`: 分析堆转储文件的命令行工具。 6. **...

    eclipse-inst-jre-linux64.tar.gz

    这个文件的扩展名 ".tar.gz" 表明它是一个使用tar工具进行打包,并通过gzip进行压缩的文件,这是一种常见的在Linux和Unix系统中分发软件的方式。 在Linux环境中,用户通常会使用以下步骤来解压和安装这个文件: 1....

    ant打包的build.xml文件

    一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用

    Java项目和文件.zip

    "Java项目和文件.zip"这个压缩包很可能包含了某个Java项目的源代码、编译后的文件以及运行所需的支持库。让我们详细解析一下这个压缩包中可能包含的内容。 1. **MyGame.jar**:这是一个Java Archive(JAR)文件,它...

    java 打包rpm打包文档.zip

    在Java世界中,通过RPM打包可以使SpringBoot应用更便于在Linux环境下分发和管理。 2. **SpringBoot与RPM集成** SpringBoot是一个轻量级的Java框架,简化了微服务的开发和部署。将SpringBoot应用打包成RPM,首先...

    javasqlite-20090430.tar.gz

    5. **构建脚本**:如Ant或Maven的构建文件,用于编译和打包JavaSQLite库。 6. **配置文件**:可能包括针对ARMLINUX平台的特殊配置,比如启动脚本、系统服务配置等。 7. **许可证文件**:关于JavaSQLite的开源许可...

    java-1.8.0-openjdk.linux.x86_64

    例如,`java -version`可以检查Java的安装版本,`javac HelloWorld.java`可以编译名为`HelloWorld.java`的源代码,`jar cvf HelloWorld.jar HelloWorld.class`则可以创建一个包含`HelloWorld.class`的JAR文件。...

    Java8 Linux版本

    这个压缩包文件“jdk1.8.0_311”就是对应的一个具体版本,其中包含了编译器、JRE(Java Runtime Environment)以及各种工具,如`javac`用于编译Java源代码,`jar`用于打包和管理类库,`javadoc`用于生成API文档等。...

    linux-java8.zip

    这样的打包方式方便了开发者和系统管理员快速部署Java环境,特别是对于那些不熟悉Linux命令行操作的用户。 总结来说,"linux-java8.zip"是一个整合了Linux系统下Java 8开发环境的压缩包,其内容可能涵盖Java 8的JDK...

Global site tag (gtag.js) - Google Analytics