Domanda

C'è un compito formica (simile a ftp o compiti SCP) che mi avrebbe permesso di copiare un insieme di file a un (SMB) condivisione di Windows?

Edit: ho dovuto creare un'operazione usando JCIFS per questo. Se qualcuno ha bisogno, qui è il codice.

Dipende JCIFS e ioutils apache.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import jcifs.smb.SmbFile;

import org.apache.commons.io.IOUtils;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Copy;

public class SmbCopyTask extends Task
{
   private File src;
   private String tgt;

   public void execute() throws BuildException
   {
      try
      {
         recursiveCopy(src);
      }
      catch (Exception e)
      {
         throw new BuildException(e);
      }
   }

   public void recursiveCopy(File fileToCopy) throws IOException
   {

      String relativePath = src.toURI().relativize(fileToCopy.toURI()).getPath();
      SmbFile smbFile = new SmbFile(tgt, relativePath);
      if(!smbFile.exists()) 
      {
         smbFile.createNewFile();
      }
      if(!fileToCopy.isDirectory()) 
      {
         System.out.println(String.format("copying %s to %s", new Object[]{fileToCopy, smbFile}));
         IOUtils.copy(new FileInputStream(fileToCopy), smbFile.getOutputStream());
      }
      else
      {
         File[] files = fileToCopy.listFiles();
         for (int i = 0; i < files.length; i++)
         {
            recursiveCopy(files[i]);
         }
      }
   }

   public void setTgt(String tgt)
   {
      this.tgt = tgt;
   }

   public String getTgt()
   {
      return tgt;
   }

   public void setSrc(File src)
   {
      this.src = src;
   }

   public File getSrc()
   {
      return src;
   }
}
È stato utile?

Soluzione

Non credo che ci sia un fuori il compito formica scatola per questo, ma si potrebbe facilmente costruire uno intorno JCIFS (un'implementazione Java della biblioteca Samba).

Altri suggerimenti

Si dovrebbe essere in grado di utilizzare solo il copiare compito, a patto come la vostra quota è montato.

Sto usando le librerie di formica in bundle con Eclipse (Windows) e posso utilizzare l'attività di copia per copiare i file in una condivisione di rete. Scommetto che le stesse opere con ANT dalla riga di comando.

<copy todir="//server_name/share_name" overwrite="true" verbose="true">
<fileset dir="./WebContent">
    <patternset refid="sources"/>
    <different targetdir="//server_name/share_name" ignoreFileTimes="true"/>
</fileset></copy>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top