我正在尝试使用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))
所指的变量类型或如何创建一个来检查进度。
非常感谢任何帮助。