如何正确地将文本文件传递给 NSFileManager

Posted

技术标签:

【中文标题】如何正确地将文本文件传递给 NSFileManager【英文标题】:How to correctly pass a textfile to NSFileManager 【发布时间】:2013-09-16 11:51:00 【问题描述】:

我正在学习 Objective-C,但在将文本文件传递给 NSFileManager 类时遇到问题。我在我的程序所在的同一目录中创建了新的空文件“testfile”,但 NSFileManager 不知何故找不到这个文件。不知道是什么问题:

NSString *fileName = @"testfile";
    NSFileManager *fileMgr;
    NSDictionary *attrib;

    fileMgr = [NSFileManager defaultManager];

    NSLog(@"%@",[fileMgr currentDirectoryPath]);

    // verifying the test file exists
    if([fileMgr fileExistsAtPath: fileName] == NO) 
        NSLog(@"File doesn't exist");
        return 1;
    

这是我的程序的附加屏幕截图

【问题讨论】:

当前目录是什么?那个文件在那个目录里吗? 是的。如果您查看屏幕截图,您可以看到我将它放在文件所在的同一目录中...如果我当然正确理解同一目录的含义 我不认为你这样做。查看NSLog() 调用打印的目录并将其与测试文件所在的位置进行比较。您通常要做的是将文件包含在应用程序包中,然后使用NSBundle 调用来确定应用程序包当前所在的位置。 参见***.com/a/17708041/1187415,了解在构建命令行工具时如何将文件复制到构建目录中。 好的,谢谢,我试试看:) 【参考方案1】:

很可能确定该文件不在程序运行所在的目录中。当您从 Xcode 运行程序时,它通常直接在 Xcode 项目的顶层运行。 NSLog 应该准确地告诉你是哪个目录。

请注意,默认情况下,Xcode 有一个用于整个项目的***目录和用于每个目标的代码的子目录。所以如果你的项目直接在你的主目录下,Xcode 会在

中运行程序
/Users/<your home>/prog36

但您的文本文件(位于目标目录中)在

/Users/<your home>/prog36/prog36

注意两个嵌套目录,都称为prog36

【讨论】:

以上是关于如何正确地将文本文件传递给 NSFileManager的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 RelayState 传递给 Okta 的 ACS URL?

如何正确地将 C 数组传递给 C#?

如何正确地将页面属性传递给局部视图?

在 C# 中如何正确地将 int 数组传递给函数

如何正确地将 numpy 数组传递给 Cython 函数?

如何正确地将变量传递给 apollo useQuery?