UNIX服务器中Zip/FTP目录的Java代码

UNIX服务器中Zip/FTP目录的Java代码,java,unix,ftp,zip,Java,Unix,Ftp,Zip,我想在Java包中编写几个方法,这些方法将部署在UNIX服务器中。 到目前为止,我的代码是针对Windows Server的,我使用以下代码来压缩目录 public static final void zipDirectory(File fBatchDirectory, String batchName, String ondemandDocExtension) throws IOException { //Set zip file name File zip = new Fi

我想在Java包中编写几个方法,这些方法将部署在UNIX服务器中。 到目前为止,我的代码是针对Windows Server的,我使用以下代码来压缩目录

public static final void zipDirectory(File fBatchDirectory, String batchName, String ondemandDocExtension) throws IOException 
{
    //Set zip file name
    File zip = new File(fBatchDirectory + "\\" + StringUtils.replace(batchName,".ind", "") + ".zip");                       

    //filter file
    FileFilter filter = new FileFilter(ondemandDocExtension);       
    File[] files = fBatchDirectory.listFiles(filter);

    if(files.length > 0)
    {           
        ZipOutputStream zos = new ZipOutputStream( new FileOutputStream(zip) );
        zip(files, fBatchDirectory, zos , ondemandDocExtension);
        zos.close();
    }         

}

private static final void zip(File[] files, File base,ZipOutputStream zos , String docExtension) throws IOException 
{                   
        byte[] buffer = new byte[8192];
        int read = 0;
        for (int i = 0, n = files.length; i < n; i++) 
        {
           //Add to zip only if its file
          if (files[i].isFile())
          {
            FileInputStream in = new FileInputStream(files[i]);
            ZipEntry entry = new ZipEntry(files[i].getPath().substring(base.getPath().length() + 1));
            zos.putNextEntry(entry);

            while (-1 != (read = in.read(buffer))) 
            {
              zos.write(buffer, 0, read);
            }
            in.close();
          }
        }
}
publicstaticfinalvoidzipdirectory(文件fBatchDirectory、字符串batchName、字符串ondemandDocExtension)引发IOException
{
//设置zip文件名
File zip=新文件(fBatchDirectory+“\\”+StringUtils.replace(batchName,“.ind”,”)+“.zip”);
//过滤文件
FileFilter filter=新的FileFilter(ondemandDocExtension);
File[]files=fBatchDirectory.listFiles(过滤器);
如果(files.length>0)
{           
ZipOutputStream zos=newzipoutpstream(newfileoutputstream(zip));
zip(文件、fBatchDirectory、zos、ondemandDocExtension);
zos.close();
}         
}
私有静态最终void-zip(文件[]文件、文件基、ZipOutStream zos、字符串docExtension)引发IOException
{                   
字节[]缓冲区=新字节[8192];
int read=0;
for(int i=0,n=files.length;i
对于如何在Java中为UNIX复制相同的功能到zip目录,我感到困惑? 然后我想将文件从一个UNIX服务器FTP到另一个UNIX服务器


任何指示都将不胜感激。

乍一看,我看到的唯一问题是这一行:

File zip = new File(fBatchDirectory + "\\" + StringUtils.replace(batchName,".ind", "") + ".zip");
因为您在文件名中显式使用了双反斜杠(
\\
)。如果更改
File.separator
的值,则代码应适用于两种操作系统:

File zip = new File(fBatchDirectory + File.separator + StringUtils.replace(batchName,".ind", "") + ".zip");
对于其中的FTP部分,您可以直接使用或使用更高级的库,顺便说一句,它启发了Java7中新的IO文件系统API,但我现在不想谈论任何库使用新的API实现FTP协议