当前位置: 首页 > 知识库问答 >
问题:

如何用JCIFS将文件从SMB共享复制到不在域中的本地驱动器

万高洁
2023-03-14
SmbFile remoteFile = new SmbFile("smb://...")
OutputStream os = new FileOutputStream("/path/to/local/file");
InputStream is = remoteFile.getInputStream();
int ch;
while ((ch = is.read()) != -1) {
    os.write(ch);
}
os.close();
is.close();

我想我可以使用smbfile.copyto(),但我不知道如何访问本地文件。如果我写了以下内容,我会得到一个连接错误:

localfile = new SmbFile("file:///path/to/localfile")

这个问题与如何在Java中使用jcifs将文件从smb共享复制到本地驱动器有关?

共有1个答案

司空健
2023-03-14

除非使用有效的smb URL,否则无法构造SmbFile对象。请参阅http://jcifs.samba.org/src/docs/api/的构造函数摘要,以及顶部关于SmbFile URL的讨论。

SmbFile URL有以下语法:SMB://[[[Domain;]用户名[:password]@]服务器[:port]/[[Share/[Dir/]文件]]][?[param=value[param2=value2[...]]]

因此,如果您真的希望避免使用输入流并使用copyTo(),您必须在本地机器上有一个SMB共享,您可以将jCIFS指向该共享。

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain", "username", "password") //or whatever authentication works on your local machine.
SmbFile myFile = new SmbFile("smb://localhost/C\$/path/to/localfile", auth)
 类似资料:
  • 有人能帮我把文件从共享文件夹复制到本地驱动器吗?我的代码是: 文件未被复制。我收到一条消息“无法连接到服务器”,但程序显示dir。源文件的getDate()(以及文件名和长度)。因此,我认为目标文件夹(C:/SQLRESTORESTAGE/)存在问题。此外,我也提供了只用于读取源文件。你能帮我纠正一下密码或者给点建议吗?非常感谢。

  • 我使用以下JCIFS代码将文件从本地磁盘复制到共享驱动器 复制10 mb文件需要10分钟以上。而当我直接复制同一个文件时,大约需要1分钟。我尝试了3种方法来复制文件(请参阅代码的注释部分),但没有一种方法显示出任何显著的差异。 是否有任何方法可以提高JCIFS的性能?

  • 我想将本地目录(包括子目录)的所有内容复制到samba共享。 有没有一个简单的方法可以做到这一点?类似于SMB文件的内容。当源和目标位于SMB上时,copyTo()。

  • 试图从jcifs转移到jcifs-ng(最新的jar jcifs-ng-2.1.2.jar)以将文件复制到/从远程。我使用旧JCIFS的代码: 在stackoverflow中找到的示例很少,但看起来它们已经过时了。

  • 我想每小时将更新的文件从本地文件系统复制到Hadoop,因为我想放入cron。我可以使用任何hadoop命令将更新的文件从本地复制到Hadoop吗?

  • 我想知道如何使用JCIFS在SMB共享中将文件从一个文件夹移动到另一个文件夹。 首先,没有任何方法。 然后,这种方法: 引发异常,