NMSFTP文件下载适用于模拟器,而不适用于iPhone

时间:2016-02-29 15:35:32

标签: ios objective-c nmssh

我正在尝试使用NMSSH中的SFTP库从ftp服务器下载文件,并且在我的实际设备上遇到了问题。它在模拟器中工作正常。当我检查存储目录(我应用程序的缓存目录中创建的文件夹)中是否存在文件时,检查会在模拟器上传递但在手机上失败。以下是我正在使用的代码。请注意,MainPath是目录路径,fileListLevel1行项是带扩展名的文件名。

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *cacheDirectory = paths[0];
        cacheDirectory = [@[cacheDirectory, @"/NewDirectory", @"/"] componentsJoinedByString:@""];
        [[NSFileManager defaultManager] createDirectoryAtPath:cacheDirectory withIntermediateDirectories:false attributes:nil error: nil];
        NSString *filePathToOpen = [@[MainPath, [fileListLevel1 objectAtIndex:indexPath.row]] componentsJoinedByString:@""];
        bool isFile = NO;
        bool isDir = NO;
        isFile = [session.sftp fileExistsAtPath:filePathToOpen];
        isDir = [session.sftp directoryExistsAtPath:filePathToOpen];
        if (isFile){
            NSString *fileToOpenNameAndPath = [@[cacheDirectory, [fileListLevel1 objectAtIndex:indexPath.row]] componentsJoinedByString:@""];
            [session.sftp writeFileAtPath:filePathToOpen toFileAtPath:fileToOpenNameAndPath];
                //FILE NOT FOUND ON THE PHONE - FOUND IN SIMULATOR!!!!!!!!
            if ([[NSFileManager defaultManager] fileExistsAtPath:fileToOpenNameAndPath]){
                NSLog(@"Found you!");
            }
            else if(![[NSFileManager defaultManager] fileExistsAtPath:fileToOpenNameAndPath]){
                NSLog(@"Why you no there?");
            }

我也尝试使用stringByAppendingPathComponent方法创建路径并获得相同的结果。

我是应用写作和目标c的新手,所以我可能会遗漏一些基本的东西,但我一直无法找到任何相关内容。

另外一个问题围绕着使用writeFileAtPath:toFileAtPath:progress命令。我想知道我的问题是否是模拟器写得快得多,所以我的检查在手机完成之前就已经发生了。我不确定如何正确使用:progress部分,因为我不确定(BOOL (^)(NSUInteger sent))所指的变量类型或如何创建一个来检查进度。

非常感谢任何帮助。

0 个答案:

没有答案