目录神奇地变成了文件

时间:2015-05-19 14:10:25

标签: ios objective-c nsfilemanager

我在我的应用的Documents文件夹的viewDidLoad中创建了一个目录。

NSString *localDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
self.projectsLocalPath = [localDirectory stringByAppendingPathComponent:@"Projects"];
if ([[NSFileManager defaultManager] fileExistsAtPath:self.projectsLocalPath] == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:self.projectsLocalPath withIntermediateDirectories:YES attributes:nil error:nil];
}

之后,我列出所有文件,使它们出现在日志中,检查它是否是目录:

//----- LIST ALL FILES -----
NSArray *contentOfFolder = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:localDirectory error:nil];
for (NSString *aPath in contentOfFolder) {
    NSString *fullPath = [localDirectory stringByAppendingPathComponent:aPath];

    BOOL isDir;
    if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) {
        NSLog(@"%@ - IT IS A DIR", fullPath);
    }
    else {
        NSLog(@"%@ - IT IS NOT A DIR", fullPath);
    }
}

当我第一次运行应用程序时,日志文件列表如下所示:

  

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite - 它不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite-shm - 这不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite-wal - 这不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Projects - IT is DIR

一切都是正确的。但是以下运行在日志中显示Projects文件夹不再是目录。

  

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite - 它不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite-shm - 这不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Project.sqlite-wal - 这不是DIR

     

/ var / mobile / Containers / Data / Application / E3 ... 94 / Documents / Projects - IT不是DIR

就像它将魔法转换为文件一样......问题是,当我想查看目录的内容时,我收到一条错误消息,说它不是目录。

我做错了吗?这个问题让我疯狂......

提前感谢大家的帮助。

修改

首次运行时,创建目录后,我会使用dropbox API下载一些文件并将其保存到新创建的目录中:[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];。将文件保存到此目录时没有错误。

1 个答案:

答案 0 :(得分:4)

致电:

[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];

您要求其他客户端将文件放在文件夹位置 - 替换文件夹 - 而不是将其放在文件夹中。

您需要创建目标文件的完整路径,包括文件夹中的文件名。