Question

Y at-il une tâche fourmi (semblable à ftp ou tâches scp) qui me permettrait de copier un ensemble de fichiers à un ordinateur Windows (smb) part?

Edit: je devais créer une tâche à l'aide jcifs pour cela. Si quelqu'un a besoin, est le code ici.

Dépend jcifs et 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;
   }
}
Était-ce utile?

La solution

Je ne pense pas qu'il y ait une sortie de la tâche fourmi boîte pour cela, mais vous pouvez facilement construire un autour jcifs (une implémentation Java de la bibliothèque Samba).

Autres conseils

Vous devriez pouvoir simplement utiliser le tâche, tant que votre part est monté.

J'utilise les bibliothèques de fourmis fournis avec Eclipse (Windows) et je peux utiliser la tâche de copie pour copier des fichiers sur un partage réseau. Je parie que les mêmes œuvres avec ANT de la ligne de commande ainsi.

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top