0

我有一个奇怪的问题,这段代码检查文件夹中是否存在文件:

- (BOOL) checkIfFileExist:(NSString *)path {    

    NSArray *documentsPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentsPaths objectAtIndex:0];
    NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

    if ([[NSFileManager defaultManager] fileExistsAtPath:fileDaControllere]) {
        NSLog(@"exist");
        return YES;
    }
    else {
        NSLog(@"not exist");
        return NO;
    }
}

问题是我总是在文件存在时文件不存在(在这种情况下,路径是 Style.css)!错误在哪里?路径似乎是正确的:

路径:/Users/kikko/Library/Application Support/iPhone Simulator/6.0/Applications/38161AFA-2740-4BE2-9EC4-C5C6B317D270/Documents/Style.css

在这里可以看到xcode上的路径和真实路径

http://www.allmyapp.net/wp-content/iFormulario/1.png

http://www.allmyapp.net/wp-content/iFormulario/2.png

4

2 回答 2

0

问题可能在于您只是附加文件而没有检查是否有路径分隔符:

NSString *fileDaControllere = [documentsDirectory stringByAppendingString:path];

因此你会变成类似的东西,../DocumentsStyle.css但它应该是../Documents/Style.css

NSString有附加路径组件的特殊方法stringByAppendingPathComponent:

NSString *fileDaControllere = [documentsDirectory stringByAppendingPathComponent:path];
于 2012-12-05T10:29:32.557 回答
0

最后我解决了这个问题,奇怪的想法是我不知道我是如何解决的,第一个问题是我将绝对路径传递给 checkIfFifFileExist 而我需要传递相对路径,函数对其进行转换到绝对路径(我的大错误),在此之后我认为问题是使用“/”,我删除所有并重写所有代码并进行一些测试。

我从包中复制文件夹:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];

NSString *folderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/icone"];
NSString *iconePath = [documentsDir stringByAppendingPathComponent:@"/icone"];

[[NSFileManager defaultManager] copyItemAtPath:folderPath toPath:iconePath error:nil];

然后我以这种方式制作图像的路径:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
 NSString *imagePath = [documentsDir stringByAppendingPathComponent:self.objMateria.iconaMateria];

现在文件存在,奇怪的是,如果:

self.objMateria.iconaMateria = /icona/Home/fisica.png

或者

self.objMateria.iconaMateria = icona/Home/fisica.png

没有任何变化,我看到了图像,而我认为其中一个路径错误......

于 2012-12-07T00:52:48.810 回答