目录神奇地变成文件
A directory magically turns into file
我在我的应用程序的文档文件夹中的 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 - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - IT IS A DIR
一切正确。但是下面的 运行s 在日志中显示 Projects
文件夹不再是一个目录。
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - IT IS NOT A DIR
就像它神奇地转换成文件一样...问题是当我想查看目录的内容时,我收到一条错误消息,提示它不是目录。
我做错了什么吗?这个问题快把我逼疯了...
提前感谢大家的帮助。
编辑:
在第一个 运行 目录创建后,我下载了一些文件并使用 dropbox API 将它们保存到新创建的目录中:[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];
。将文件保存到该目录没有错误。
通过调用:
[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];
您要求其余客户端将文件放在文件夹位置 - 替换文件夹 - 而不是将其放在文件夹中。
您需要创建目标文件的完整路径,包括文件夹内的文件名。
我在我的应用程序的文档文件夹中的 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 - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - IT IS A DIR
一切正确。但是下面的 运行s 在日志中显示 Projects
文件夹不再是一个目录。
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - IT IS NOT A DIR
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - IT IS NOT A DIR
就像它神奇地转换成文件一样...问题是当我想查看目录的内容时,我收到一条错误消息,提示它不是目录。
我做错了什么吗?这个问题快把我逼疯了...
提前感谢大家的帮助。
编辑:
在第一个 运行 目录创建后,我下载了一些文件并使用 dropbox API 将它们保存到新创建的目录中:[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];
。将文件保存到该目录没有错误。
通过调用:
[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];
您要求其余客户端将文件放在文件夹位置 - 替换文件夹 - 而不是将其放在文件夹中。
您需要创建目标文件的完整路径,包括文件夹内的文件名。