gpt4 book ai didi

java - 如何将文件从 Windows 服务器路径复制/传输到 Linux 服务器路径?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:11 31 4
gpt4 key购买 nike

我试过下面的代码:

String url = "smb://remotehost/SharedPath/Comp/NG/";
NtlmPasswordAuthentication auth2 = new
NtlmPasswordAuthentication(null,"user", "password");
SmbFile dir = new SmbFile(url, auth);
for (SmbFile f : dir.listFiles())
{
if(f.getName().contains("Test")) //successfully reads the file
{
System.out.println("test...."+f);
filename= f.getUncPath();
System.out.println("filename...."+filename);
sftpChannel.put(filename, remoteDirectory); // throws exception
}
}

以上代码导致异常如下:java.io.FileNotFoundException:\\remotehost\SharedPath\comp\NG\Test.txt(登录失败:未知用户名或错误密码)

请注意:

  • 我可以使用上述代码读取远程服务器中存在的文件,但无法将文件从远程服务器路径复制或传输到 Linux 服务器路径。

  • 由于与远程服务器和 linux 服务器的连接成功,我尝试使用 sftpchannel.put() 直接将文件从远程路径复制到 linux 服务器路径,但它抛出异常。

  • 使用 smb 连接后,我们是否无法使用以下 url 直接连接到共享路径? String url = "//remotehost/SharedPath/Comp/NG/";

请注意:我正在使用 jsch 库连接到 Linux 服务器,并且我能够使用 sftpChannel.connect() 成功连接到 Linux 服务器;并且还能够使用 sftpChannel.put(localpath, linuxpath); 将文件从我的本地机器放到 Linux 服务器上;和要连接到 Windows 服务器,我正在使用 smbFile。我能够连接但无法将文件从 Windows 复制到 Linux 服务器路径。我尝试使用 sftpChannel.put(filename, remoteDirectory);同样,但它导致异常。在此特定步骤中,我假设当与 Windows 服务器的连接成功时,我也将能够复制文件。我能够读取文件但不能复制。不确定为什么会这样。

谁能给我提供正确的步骤来做到这一点?

最佳答案

我猜 sftpChannel 的类型是 com.jcraft.jsch.ChannelSftp。然后下面的方法将为您完成复制。当然,您必须传递正确初始化的 SmbFileChannelSftp 对象作为参数。

public void copyFromSmbToSftp(SmbFile smbFile, ChannelSftp channelSftp, String destPath) throws IOException, SftpException {
try(BufferedInputStream inputStream = new BufferedInputStream(smbFile.getInputStream());
BufferedOutputStream outputStream = new BufferedOutputStream(channelSftp.put(destPath))){
byte[] buffer = new byte[64*1024];
int bytesRead;
while((bytesRead=inputStream.read(buffer, 0, buffer.length))!=-1){
outputStream.write(buffer, 0, bytesRead);
}
}
}

关于java - 如何将文件从 Windows 服务器路径复制/传输到 Linux 服务器路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799583/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com