2011-11-17 4 views
1

Je suis nouveau sur Android et Samba. J'essaie d'utiliser la copie JCIFS. Méthode permettant de copier un fichier d'un répertoire Samba vers le répertoire 'Download' sous sdcard sur un périphérique Android 3.1. Voici mon code:Copie d'un fichier à partir d'un lecteur Samba vers un répertoire sdcard Android

from = new SmbFile("smb://username:[email protected]/sandbox/sambatosdcard.txt"); 
File root = Environment.getExternalStorageDirectory(); 
File sourceFile = new File(root + "/Download", "SambaCopy.txt"); 
to = new SmbFile(sourceFile.getAbsolutePath()); 
from.copyTo(to); 

Je reçois une MalformedURLException dans le fichier 'to'. Est-il possible de contourner ce problème en utilisant la méthode copyTo, ou existe-t-il un moyen alternatif pour copier un fichier à partir du dossier samba dans le dossier sdcard en utilisant JCIFS ou de toute autre manière? Merci.

+0

Y at-il un message dans l'exception qui pourrait être utile? – Patrick

+0

Voici le message que je vois dans LogCat: "11-17 08: 52: 00.178: W/System.err (639): java.net.MalformedURLException: Protocole introuvable: /mnt/sdcard/Download/SambaCopy.txt" – user1005585

+0

J'ai dû utiliser le SMBFileInputStream et le java FileOutputStream standard pour copier le fichier, comme ici: http: //sambaexplorer.googlecode.com/svn-history/r2/trunk/DownloadService.java – user1005585

Répondre

0

La méthode copyTo() de SmbFile vous permet de copier des fichiers du réseau vers le réseau. Pour copier des fichiers entre votre appareil local et le réseau, vous devez utiliser des flux. E.g .:

try { 
    SmbFile source = 
      new SmbFile("smb://username:[email protected]/sandbox/sambatosdcard.txt"); 

    File destination = 
      new File(Environment.DIRECTORY_DOWNLOADS, "SambaCopy.txt"); 

    InputStream in = source.getInputStream(); 
    OutputStream out = new FileOutputStream(destination); 

    // Copy the bits from Instream to Outstream 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
    // Maybe in.close(); 
    out.close(); 

} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Questions connexes