2011-11-17 99 views
1

我是Android和Samba的新手。我正在尝试使用JCIFS副本。将方法从Samba目录复制到Android 3.1设备上sdcard下的'Download'目录。以下是我的代码:将文件从Samba驱动器复制到Android sdcard目录

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); 

我正在'to'文件中发生MalformedURLException。有没有办法使用copyTo方法来解决这个问题,或者有没有其他方法使用JCIFS或其他方式将文件从samba文件夹复制到sdcard文件夹?谢谢。

+0

在异常中是否有任何消息可以提供帮助? – Patrick

+0

这是我在LogCat中看到的消息:“11-17 08:52:00.178:W/System.err(639):java.net.MalformedURLException:Protocol not found:/mnt/sdcard/Download/SambaCopy.txt” – user1005585

+0

我不得不使用SMBFileInputStream和常规java FileOutputStream来复制文件,如下所示:http://sambaexplorer.googlecode.com/svn-history/r2/trunk/DownloadService.java – user1005585

回答

0

SmbFile的copyTo()方法可让您将文件从网络复制到网络。要在本地设备和网络之间复制文件,您需要使用流。例如:

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(); 
} 
相关问题