NMSSH寻找什么类型的路径(iOS)?

时间:2014-05-09 01:42:59

标签: ios linux path

我已经与远程服务器建立了SSH连接,并想检查用户主文件夹中是否有名为“Images”的目录,如果没有,则创建该目录。我知道我必须在路径上做错事,但我无法弄明白:

NMSFTP *sftp = [[NMSFTP alloc] initWithSession:session];
    if (![sftp directoryExistsAtPath:@"~/Images"]) {
        [sftp createDirectoryAtPath:@"~/Images"];
    }

这是调试器给我的输出:

NMSSH: Could not open file at path ~/Images (Error 0: )

NMSSHSession的实例连接并验证就好了,这是我不确定的路径。任何帮助,将不胜感激。

编辑:这是使用的两种方法的实现:

- (BOOL)directoryExistsAtPath:(NSString *)path {
    LIBSSH2_SFTP_HANDLE *handle = [self openFileAtPath:path flags:LIBSSH2_FXF_READ mode:0];

    if (!handle) {
        return NO;
    }

    LIBSSH2_SFTP_ATTRIBUTES fileAttributes;
    int rc = libssh2_sftp_fstat(handle, &fileAttributes);
    libssh2_sftp_close(handle);

    return rc == 0 && LIBSSH2_SFTP_S_ISDIR(fileAttributes.permissions);
}

- (BOOL)createDirectoryAtPath:(NSString *)path {
    int rc = libssh2_sftp_mkdir(self.sftpSession, [path UTF8String],
                                LIBSSH2_SFTP_S_IRWXU|
                                LIBSSH2_SFTP_S_IRGRP|LIBSSH2_SFTP_S_IXGRP|
                                LIBSSH2_SFTP_S_IROTH|LIBSSH2_SFTP_S_IXOTH);

    return rc == 0;
}

解决方案:事实证明,您还必须在NMSFTP实例(以及NMSSHSession实例)上调用connect才能使其正常工作。此代码正常运行:

NMSFTP *sftp = [[NMSFTP alloc] initWithSession:session];
[sftp connect];
if (![sftp directoryExistsAtPath:@"Images"]) {
    [sftp createDirectoryAtPath:@"Images"];
}

0 个答案:

没有答案