首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查Cocoa和Objective-C中是否存在文件夹?

在Cocoa和Objective-C中,检查是否存在文件夹的常见方法是使用NSFileManager类。NSFileManager提供了一种方法来管理文件和文件夹,并让我们能够执行许多文件和文件夹相关的操作,如创建、移动、获取和删除。在这个示例中,我们将使用FileManager中的URLsForDirectory(_:inDomains:appropriateForURL:create:error:)方法来检查指定目录是否存在。

下面是一个使用Swift编写的示例代码:

代码语言:swift
复制
import Foundation

// 创建一个具有根路径的URL对象
let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

// 检查根目录下是否存在一个名为"folderName"的文件夹
if FileManager.default.fileExists(atPath: directoryURL.absoluteString + "/" + "folderName") {
    print("文件夹存在")
} else {
    print("文件夹不存在")
}

使用Objective-C的写法相对简单一些:

代码语言:objective-c
复制
#import<Foundation/Foundation.h>

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSURL *documentsDirectoryURL = [fileManager urlsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask appropriateForURL:nil create:YES error:&error];
NSURL *directoryURL = [documentsDirectoryURL URLByAppendingPathComponent:@"folderName"];
BOOL isExists = [fileManager fileExistsAtPath:[directoryURL absoluteString]];
    
if (isExists) {
    NSLog(@"文件夹存在");
} else {
    NSLog(@"文件夹不存在");
}

上述示例可以检查目录Documents/folderName在当前用户账户下是否存在。如果存在,执行一段代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Sketch 插件开发官方文档合集插件基础您的第一个插件开发环境调试ActionAPI发布插件插件捆绑插件,脚本和命令插件位置更多关于CocoaScriptSketchTool参考资源

    我们努力使Sketch成为梦想中的“设计师工具箱”。但是每个人都有不同的需求,也许你需要一个我们还没有实现的功能。不要担心:插件已经可以满足您的需求,或者您可以轻松创建一个插件。 如果您有兴趣扩展Sketch,那么您就位于正确的位置。在这里,我们展示Sketch可扩展性文档的概要以及如何快速构建您的第一个Sketch插件。 如果您只想使用现有的插件,请参阅插件目录。 你可以用插件做什么? Sketch中的插件可以做任何用户可以做的事情(甚至更多!)。例如: 根据复杂的规则选择文档中的图层 操作图层属性 创建

    09

    《Objective-C基础教程》笔记

    1.xcode中,oc的.m文件代表message,指的是Objective-C的一个主要特性。 2.NS前缀的来历要追溯到次公局包还被成为NextStep,而且是Next Software公司时。 3.双引号前有一个@符号,这表示引用的字符串应该作为Cocoa的NSString元素来处理。 4.编译器使用“基地址加偏移”机制实现奇妙的功能。给定的对象基地址,是指第一个实例变量的首个字节在内存中的位置。通过在该地址加上偏移地址,编译器就可以查找其他实例变量的位置。 5.不要将get作为getter方法的前缀。因为get在Cocoa中有特殊的含义。如果get出现在Cocoa方法名称中,就意味着这个方法会通过你当做参数传入的指针来返回数值。 6.导入头文件有两种不同的方法:使用引号或者使用尖括号。带尖括号的语句用来导入系统头文件,带引号的语句则说明导入的是项目本地的头文件。也就是说,如果你看到的头文件名是尖括号,则这个头文件对你来说是只读的;如果头文件被双括号包围,则你可以编译它。 7.@class创建了一个前向引用。就是在告诉编译器:“相信我,以后你会知道这个类到底是什么,但是现在,你只需要知道这些。”如果有循环依赖关系,@class也很有用。即A类使用B类,B类也使用A类。如果试图通过#import语句让这两个类相互引用,那么最后就会出现编译错误。如果在A.h中使用@class B,在B.h中使用@class A,那么这两个类就可以相互引用了。 8.如果有些类型使用C的struct而不是对象,一定是因为性能。程序(尤其是GUI)会用到许多临时的点、大小和矩形来完成他们的工作。所有的Objective-C对象都是动态分配的,而动态分配是一个代价较高的操作,它会小号大量的时间。因此将这些结构创建成第一等级的对象会在使用过程中增加大量的系统开销。 9.比较两个字符串是否相等时,应该用isEqualToString:,而不是仅仅比较字符串的指针值。例如: if([thing1 isEqualTOString: thing2])和if(thing1 == thing2)是不同的。因为==运算符只能判断thing1和thing2的指针数值,而不是他们所指的对象。由于thing1和thing2是不同的字符串,所以第二种比较方式会认为他们是不同的。 有时,我们想检查两个对象的标识:thing1和thing2是同一个对象吗?这是就应该使用运算符==,如果想查看等价位(即这两个字符串是否代表同一个事物),那么请使用isEqualToString。 10.编译器和苹果公司都已下划线开头的形式保存实例变量名称,如果你尝试在其他地方使用下划线,可能会出现严重的错误。这条规则实际上不是强制的,但是如果不遵循它,你可能会遇到某种风险。

    02

    Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

    Qt/C++开发人员眼中的Obj-C 对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这篇博客的内容,我将描写叙述诸多我所学到的东西.这将很多其它的是大脑转存而不是单一的教程 ,所以我仍然希望这将对你非常有帮助,我将首先写编程语言的差异,然后再写关于类库的差异 1.Objective C vs C vs C++ 类似于C++,Obj-c是C语言的一个超集(这不是100%正确的,可是一个足够好的语句来理解它),您将使用的文件扩展名的头.h和.m来表示Obj-C语法 注意还有obj- c++文件扩展名.mm,尽管我如今还不会写. 类似于塞班c++,Obj-C是使用两个阶段进行构造:首先你在堆上分配对象,然后调用init方法. 通常能够避免调用两个方法和仅仅使用一个静态简便的方法,直接给你一个新分配的对象(比如stringWithCString). 全然不同(起初很分散)是Obj-C函数的调用方法,类似通常的C-ish方式,比如NSLog(@“我的日志消息”);但也有Obj-C语法对象的调用方法。 作为一个样例,这是对象有一个方法包括两个參数:obj(obj methodName:param1value param2:param2Value]。看起来非常奇怪甚至别扭,但你要去适应它。 在Objective C,这是通常被称为发送消息,不不过它的调用方法,还有好多我发现更加混乱. 在上面这种方法演示样例,methodName是所谓的选择器。一个选择器是一个方法的标识符。有时你必须识别方法(类似于一个函数指针), 在上面的样例中你能够这样写@selector(methodName:param2:). 在c++中没有根对象和Qt QObject仅用于一些对象,Objective C有强制性的根对象NSObject . 相反Qt你想信号/插槽,你仅仅用QObject类,而Obj-c这里你用NSObject做不论什么事情. 自从iOS 5 实现ARC(自己主动引用计数),觉得它像一个隐式QSharedPointer在你的对象。编码过程感觉到你有一个垃圾收集器。在内部,ARC告诉编译器插入保留(添加引用计数)和释放(减量引用计数和终于销毁)语句在您的代码中。 我觉得这是非常棒的,假设你坚持正常的做事的方式你基本上能够不再再操心内存泄漏. Objective C属性类似于Qt中的Q_PROPERTY,这意味着您能够使用好obj.var = foo语法在代码内部(obj setVar:foo)消息称为(好吧. .消息发送)。您能够创建一个属性@property和编译器使用@synthesize为你做一个getter / setter。 当然也能够定制getter / setter实现很多其它的内部逻辑,比如实现延迟初始化。 你能想象Objective C托付作为一组插槽。托付对象的一个托付方法被对象调用通知某些事情已经发生。这很类似于Java的接口 2.与Qt相关类相类似的东西 与语法一样重要是相关的库所提供的iOS(和OS X)。请继续阅读,了解他们提供的对象和功能。 NSString对象是一个常量字符串。您还能够创建通过@“followed by me”。

    01
    领券