gpt4 book ai didi

java - 使用 JSch 解释 SFTP 文件传输中使用的路径

转载 作者:行者123 更新时间:2023-11-30 08:07:34 25 4
gpt4 key购买 nike

public static void sftpFile( String localDir, 
String localFileName,
String localAbsoluteFileName,
String targetHost,
int targetPort,
String targetDir,
String identityFile,
String targetUserId,
String targetPassword) throws ErrorCodeException
{

Session session = null;
ChannelSftp sftpChannel = null;
JSch jsch = new JSch();
try
{
session = jsch.getSession( targetUserId, targetHost, targetPort );
session.setConfig( "StrictHostKeyChecking", "no" );

if( identityFile != null )
{
jsch.addIdentity( identityFile );
}

if( targetPassword != null )
{
session.setPassword( targetPassword );
}

session.connect();

Channel channel = session.openChannel( "sftp" );
channel.connect();
sftpChannel = (ChannelSftp) channel;
sftpChannel.cd( targetDir );
sftpChannel.lcd( localDir );

sftpChannel.get( localAbsoluteFileName, "." );
if( log.isTraceEnabled() )
{
log.trace( tracePrefix + localFileName + ": Done SFTP" );
}
}
catch( Exception e )
{
System.out.println( "Error connecting to target host." );
throw new ErrorCodeException(ErrorCode.COMMUNICATION_FAILURE);
}
finally
{
if ( sftpChannel != null )
{
sftpChannel.exit();
}
if ( session != null )
{
session.disconnect();
}
}

}

我对以下条款不是很清楚

  • 本地目录
  • 目标目录
  • 本地文件名
  • 本地绝对文件名

我想将文件 test.csv 从服务器传输到客户端,从客户端打开 SFTP channel 。

文件位于服务器“10.10.20.30”中的以下位置

/ram/server/files/test.csv

需要复制到客户端“10.10.20.40”中的以下位置

/ram/client/files

这里是什么localDir, targetDir, localFileName, localAbsoluteFileName以及以下步骤的作用

sftpChannel.cd( targetDir );
sftpChannel.lcd( localDir );

最佳答案

  • localDir - 本地工作目录。代码使用相对目标路径(.),相对于本地工作目录进行解析。由于相对路径是“此路径”(点),因此您可以有效地将文件下载到 localDir。您应该将其设置为 /ram/client/files
  • targetDir - 远程工作目录。如果 localAbsoluteFileName 确实是绝对的,则远程工作目录无关紧要。删除使用(.cd 调用)或者,如果您不想更改实现,将其设置为 /ram/server/files(或任何其他您有权访问的路径)。尽管名称为(“目标”),但如果使用的话,它实际上是一个源目录。
  • localFileName - 仅用于日志记录。
  • localAbsoluteFileName - 尽管名称中包含“本地”,但它用作要下载的远程 文件的源路径。您应该将其设置为 /ram/server/files/test.csv

通常参数的命名似乎是错误的。看起来有人将上传代码更改为下载代码(将 .put 替换为 .get),同时保留用于上传的参数命名。

关于java - 使用 JSch 解释 SFTP 文件传输中使用的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604129/

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