需要了解文件传输模式

时间:2013-10-22 02:30:44

标签: java ssh bit-manipulation sftp

我正在使用SFTP APIjsacpe)进行文件传输。

这些文件基本上是一个文字内容,其扩展名为.log, .dat.txt.jrn。在传输文件之前,我正在执行AES encryption

文件传输模式为“自动”。

示例代码:

    SshParameters sshParameters = new SshParameters("127.0.0.1",22,"User Name","Password");
    SshHostKeys sshHostKeys = new SshHostKeys();
    InetAddress address = InetAddress.getByName("127.0.0.1);
    sshHostKeys.addKey(address, "finger print");
    HostKeyVerifier keyVerifier = new HostKeyFingerprintVerifier(sshHostKeys);
    sshParameters.setHostKeyVerifier(keyVerifier);

    sftp = new Sftp(sshParameters);
    sftp.setTimeout(30 * 1000);
    sftp.setDownloadBlockSize(300);
    sftp.setUploadBlockSize(300);
    sftp.setSendBufferSize(300);
    sftp.setReceiveBufferSize(300);
    sftp.addSftpListener(this);
    sftp.connect();

    **sftp.setAuto(true);**

我想知道sftp将以哪种模式(ASCII或二进制)传输文件。

如果我们将其设置为“自动”,sftp api将如何决定ftp模式,因为扩展类型对于每组文件都不同。

May be this is an basic question but i want to understand.

提前感谢!

1 个答案:

答案 0 :(得分:0)

SFTP协议默认使用二进制模式,直到SFTP版本4,它甚至没有ASCII模式。某些软件(包括我们的SecureBlackbox库)可以模拟ASCII模式,但是这种模拟不是很可靠,因为它不知道目标系统使用什么EOL约定。

现在正如评论中所说,你最好坚持使用二进制模式,不要依赖任何自动化的东西。我可以想象,在某些小文件上,自动检测可能会失败,从而破坏您的数据。

相关问题