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

如何在Cocoa中安全地写入给定的文件路径,必要时添加数字后缀?

在Cocoa中,可以使用NSFileManager类来安全地写入给定的文件路径,并在必要时添加数字后缀。以下是一个示例代码:

代码语言:txt
复制
- (NSString *)uniquePathForPath:(NSString *)path {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *uniquePath = path;
    NSInteger suffix = 1;
    
    while ([fileManager fileExistsAtPath:uniquePath]) {
        NSString *pathWithoutExtension = [uniquePath stringByDeletingPathExtension];
        NSString *extension = [uniquePath pathExtension];
        uniquePath = [NSString stringWithFormat:@"%@-%d.%@", pathWithoutExtension, suffix, extension];
        suffix++;
    }
    
    return uniquePath;
}

这个方法接受一个文件路径作为输入,并返回一个保证不存在的文件路径。如果给定的路径已经存在,则在原始路径的基础上添加数字后缀,直到找到一个不存在的路径。

例如,如果输入路径为/path/to/file.txt,并且该文件已经存在,则该方法将返回/path/to/file-1.txt,如果该路径也存在,则将返回/path/to/file-2.txt,以此类推。

使用这个方法,可以确保在写入文件时不会覆盖已有的文件,从而保证文件的安全性。

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

相关·内容

openssl原理与操作

密钥和证书管理 数字证书是一个经证书授权中心数字签名包含公开密钥拥有者信息以及公开密钥文件。 最简单证书包含一个公开密钥、名称以及证书授权中心数字签名。...openssl简单使用 概念解释 CA: CA就相当于一个认证机构,只要经过这个机构签名证书我们就可以当做是可信任。我们浏览器,已经被写入了默认CA根证书。...证书: 证书就是将我们公钥和相关信息写入一个文件,CA用它们私钥对我们公钥和相关信息进行签名后,将签名信息也写入这个文件后生成一个文件。...编码方式: .pem 后缀证书都是base64编码 .der 后缀证书都是二进制格式 证书: .csr 后缀文件是用于向ca申请签名请求文件 .crt .cer 后缀文件都是证书文件(编码方式不一定...-a/-base64:使用base-64位编码格式; -salt:自动插入一个随机数作为文件内容加密,默认选项; -in FILENAME:指定要加密文件存放路径; -out FILENAME:指定加密后文件存放路径

99030

iOS学习——iOS 整体框架及类继承框架图

每一个子框架都是一个目录,包含了共享资源库,用于访问该资源库中储存代码文件,以及图像、声音文件等其他资源,共享资源库定义应用程序可以调用函数和方法。...因此,这两天得闲就对这一块进行整理和学习,对Cocoa框架最重要Foundation 和 UIKit框架类继承体系进行了梳理。...将上图Foundation框架类进行逻辑分类如下: 值对象 集合  操作系统服务 包括下面三个 文件系统和URL 进程间通讯。 ...框架入口: #import   ,当引入此头文件后,便可以在程序里使用任何在UIKit里声明类。(PS: 当然还要把这个框架链接到你应用程序)。...instancesRespondToSelector:类方法则用于测试给定实例是否实现指定方法。 conformsToProtocol:方法用于测试接收者(对象或类)是否遵循给定协议。

3.5K70
  • LinuxShell命令sed

    sed 默认不会直接修改源文件,而是将读入数据先复制到模式空间(pattern space)缓存,再根据给定命令对模式空间中数据进行处理并输出(默认 STDOUT)。 2....-i[SUFFIX]、--in-place[=SUFFIX] :在原文件上就地编辑(如果提供 SUFFIX 后缀名,sed 将备份原文件并以原文件名拼接 SUFFIX 命名。...【注】flags 可为以下四种(可直接拼接叠加使用): 数字 :指明替换第几处 regexp g :表明替换所有的 regexp p :表明打印匹配到模式空间中处理后内容 w file :将替换后数据写入...举例 打印 XXX 文件第 5 行及其后所有行: sed -n '5,$p' XXX 将 XXX 文件数据第 2 行删除后写入 YYY 文件: sed -n '2d; w YYY' XXX 将...XXX 文件数据空白行替换成 text 并回写入 XXX 文件: sed -i 's/^$/text/' XXX 使用 sed 从命令脚本文件读取命令来将数据 X、Y、Z 依次替换为 x、y

    1.1K30

    100个Linux命令(6)-软件管理 rpm 和 yum

    包含 c文件和 h 文件; 编译。使用编译器( gcc)将源码(c 文件和 h 文件)编译成目标文件 o 文件; 在编译过程,使用 makefile 文件配置选项进行编译。...(2)库文件后缀有3种:静态库 a、动态库 so 或 sl (3)很多库后缀后面还会有数字,这些数字与库版本有关,带有数字版本文件是不带数字文件链接。...源码包与源码区别: 源码一般是打包压缩后文件.tar.gz 结尾文件 源码包包含了源码,还包含了一些有助于制作二进制包 rpm 文件。...image.png 使用rpm工具管理包: 如果要操作未安装包,则使用包全名,安装包,查看未安装包信息等;如果要操作已安装rpm包,则只需要给定其包名即可,查询已装包生成了哪些文件,查看已装包信息等.../configure"或带有编译选项"./configure",检查系统环境是否符合满足安装要求,并将定义好安装配置写入和系统环境信息写入Makefile文件

    2.2K30

    【iOS 开发】Objective-C 入门 Xcode 环境详解

    : 在 HelloWorld 目录下 ".h" 和 ".m" 后缀文件是源文件; -- 属性文件 : 在 HelloWorld 下 Supporting Files 目录下是属性文件 图片等; -...添加一个断点; 开始调试(自动判断) : 点击顶部面板调试按钮, 如果代码中有断点, 就会自动进入调试状态, 执行到断点时会自动停止, 详细调试信息显示在底部调试输出面板; 调试面板介绍..., 连接检查器; 文件检查器 :  -- Identity and Type : File Name(文件名), File Type(文件类型), Full Path(路径); -- Text Settings...文件扩展名介绍 C语言源文件后缀 : ".c"; C++语言源文件后缀 : ".cc", ".cpp"; 头文件 : ".h"; Object-C源程序 : ".m"; Object-C++源程序 :...} return 0; } (1) 导入框架头文件 导入头文件语句 : #import 是导入 a 框架 b.h 头文件; 框架简介 : 框架是 一系列类 函数集合, Cocoa

    1.8K20

    ios 笔试题3

    (2)在 C 引用 C++语言中函数和变量时,C++文件添加 extern "C",但是在 C 语言中不能直接引用声明了 extern "C"该头文件,应该仅将 C 文件中将 C++定义...在一个给定实体,同一个属性所有值具有相同数据类型。键-值编码技术用于进行这样查找—它是一种间接访问对象属性机制。...后缀为m文件时,可以识别obj-c和c代码, 处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include文件,也不能出现obj-...实现文件,即类实现代码可以使用obj-c东西,可以import,只是后缀是mm。...如果模块以函数实现,那么头文件要按 c格式声明函数,实现文件,c++函数内部可以用obj-c,但后缀还是mm或m。

    72910

    深入了解Elasitcsearch存储

    声明:本文翻译自《A Dive into the Elasticsearch Storage》 本文我们将研究Elasticsearch各功能模块写入数据目录文件。...这些文件来自哪里 因为Elasticsearch底层分片层面使用Lucene来索引和查询,因此数据目录文件是由Elasticseach和Lucene共同写入。...两者分工很明确:Lucene负责写入和维护Lucene索引文件,Elasticsearch负责写入和维护构建在Lucene之上特性元数据文件字段映射,索引设置和其他集群元数据(底层Lucene不支持但...为了在不执行一个完整Lucene commit前提下,向Elasticsearch写入一个文件并让其可以被检索,Elasticsearch将该文档添加到Lucene IndexWriter并将其追加到...该文件是包含当前(最新)segment_N文件信息辅助文件,用于当文件系统列举目录信息不全时辅助生成最新segment文件。 在老版本Lucene,还会有.del后缀文件

    10.2K80

    2021年大数据Flink(四十八):扩展阅读  Streaming File Sink

    ,是为了解决如下问题: 大数据业务场景,经常有一种场景:外部数据发送到kafka,flink作为中间件消费kafka数据并进行业务处理;处理完成之后数据可能还需要写入到数据库或者文件系统,比如写入...StreamingFileSink就可以用来将分区文件写入到支持 Flink FileSystem 接口文件系统,支持Exactly-Once语义。...该分区行为可配,默认按时间,具体来说每小时写入一个Bucket,该Bucket包括若干文件,内容是这一小时间隔内流收到所有record。...In-progress :当前文件正在写入                          * 2....而额外文件滚动由可配滚动策略决定。 关于顺序性 对于任何给定Flink子任务,PartFile索引都严格增加(按创建顺序),但是,这些索引并不总是顺序

    2.1K20

    Java8NIO新文件IO到底有多好用?

    虽然看上去应该被称为"路径",实际上却应该表示目录或者文件本身。这是个非常草率并且令人困惑命名,但是由于 java.nio.file 存在我们可以安全地忽略它存在。...这是因为使用 endsWith() 比较是整个路径部分,而不会包含文件路径后缀。通过使用 startsWith() 和 endsWith() 也可以完成路径遍历。...我们使用 relativize() 移除 Path 路径,使用 resolve() 添加 Path 路径(不一定是“可发现”名称)。...可以获得给定 URI 文件系统,还可以构建新文件系统(对于支持它操作系统)。 路径监听 通过 WatchService 可以设置一个进程对目录更改做出响应。...Files.lines() 对于把文件处理行传入流时非常有用,但是如果你想在 Stream 读取,处理或写入怎么办?

    48920

    Java8编程实战-nio.file新文件IO API

    虽然看上去应该被称为"路径",实际上却应该表示目录或者文件本身。这是个非常草率并且令人困惑命名,但是由于 java.nio.file 存在我们可以安全地忽略它存在。...这是因为使用 endsWith() 比较是整个路径部分,而不会包含文件路径后缀。通过使用 startsWith() 和 endsWith() 也可以完成路径遍历。...我们使用 relativize() 移除 Path 路径,使用 resolve() 添加 Path 路径(不一定是“可发现”名称)。...可以获得给定 URI 文件系统,还可以构建新文件系统(对于支持它操作系统)。 ? ? 路径监听 通过 WatchService 可以设置一个进程对目录更改做出响应。...Files.lines() 对于把文件处理行传入流时非常有用,但是如果你想在 Stream 读取,处理或写入怎么办?这就需要稍微复杂代码: ?

    54710

    Python 文件处理

    通过将字段包含在双引号,可确保字段分隔符只是作为变量值一部分,不参与分割字段(...,"Hello, world",...)。...Pythoncsv模块提供了一个CSV读取器和一个CSV写入器。两个对象第一个参数都是已打开文本文件句柄(在下面的示例,使用newline=’’选项打开文件,从而避免删除行操作)。...CSV写入器提供writerow()和writerows()两个函数。writerow()将一个字符串或数字序列作为一条记录写入文件。该函数将数字转换成字符串,因此不必担心数值表示问题。...类似地,writerows()将字符串或数字序列列表作为记录集写入文件。 在下面的示例,使用csv模块从CSV文件中提取Answer.Age列。假设此列肯定存在,但列索引未知。...Python对象 备注: 把多个对象存储在一个JSON文件是一种错误做法,但如果已有的文件包含多个对象,则可将其以文本方式读入,进而将文本转换为对象数组(在文本各个对象之间添加方括号和逗号分隔符

    7.1K30

    js基本数据类型 BigInt 和 Number 区别

    今天在做LeetCode一到 “加一” 题,题目如下 给定一个由整数组成非空数组所表示非负整数,在该数基础上加一。 最高位数字存放在数组首位, 数组每个元素只存储一个数字。...在JavaScript基本数据类Number是双精度浮点数,它可以表示最大安全范围是正负9007199254740991,也就是253次方减一, 比253大所有数字则可以使用BigInt表达...BigInt是JavaScript一个新原始类型,可以用任意精度表示整数。使用BigInt,即使超出JavaScript Number 安全整数限制,也可以安全地存储和操作大整数。...可以这样定义一个 BigInt 变量:在一个整数字面量后面加 n,:10n,或者调用函数BigInt()。 要创建一个BigInt,在数字后面添加n后缀即可,例如,123变成123n。...:不能和 Math 对象方法一起使用;不能和任何 Number 实例混合运算。

    6.9K31

    第53节:Java当中IO流(上)

    数据存储到内存,对象,字符串,日期,系统信息等.内存和硬盘关系是input输入和output输出关系.所以输出输出就可以简称io了哦....createTempFile(String prefix, String suffix) 返回类型为static File,在默认临时文件目录创建一个空文件,使用给定前缀和后缀生成其名称 createTempFile...(String prefix, String suffix, File directory) 返回为static File,在指定目录创建一个新文件,使用给定前缀和后缀字符串生成其名称 delete...,路径名为表示此抽象路径名表示目录文件 listFiles(FileFilter filter) 返回为File[] 返回为抽象路径名数组,这些路径名表示此抽象路径名表示目录满足指定过滤器文件和目录...,用来向文件写入数据输出流 FileOutputStream(File file, boolean append) 用来向指定File文件写入数据文件输出流,继续写数据,用来续写 public

    55420

    Java基础系列8——IO流超详细总结

    字节流抽象基类:   InputStream,OutputStream 字符流抽象基类:   Reader,Writer 由这四个类派生出来子类名称都是以其父类名作为子类名后缀InputStream...,上面的那种方式写入文件时,会将之前文件覆盖了,之前文件内容不存在了,那么如何在已有的文件后面添加内容 /* 演示对已有文件数据续写。...BufferedWriter 作用是为其他字符输出流添加一些缓冲功能,使用BufferedWriter可以提高我们写入文件效率。...static File createTempFile​(String prefix, String suffix) 在默认临时文件目录创建一个空文件,使用给定前缀和后缀生成其名称。...static File createTempFile​(String prefix, String suffix, File directory) 在指定目录创建一个新文件,使用给定前缀和后缀字符串生成其名称

    1.4K10

    Java当中IO流(上)

    简书作者:达叔小生 add put 添加存储, Collection - Iterator Map - Set - Iterator IO流出现是为了存储数据和读取数据操作.数据存储到内存,对象...createTempFile(String prefix, String suffix) 返回类型为static File,在默认临时文件目录创建一个空文件,使用给定前缀和后缀生成其名称 createTempFile...(String prefix, String suffix, File directory) 返回为static File,在指定目录创建一个新文件,使用给定前缀和后缀字符串生成其名称 delete...,路径名为表示此抽象路径名表示目录文件 listFiles(FileFilter filter) 返回为File[] 返回为抽象路径名数组,这些路径名表示此抽象路径名表示目录满足指定过滤器文件和目录...,用来向文件写入数据输出流 FileOutputStream(File file, boolean append) 用来向指定File文件写入数据文件输出流,继续写数据,用来续写 public

    48750

    插件,脚本和命令目录

    Sketch插件定义了一个或多个命令,其中Sketch将显示菜单项。 这些命令每一个实际上都是作为一个JavaScript函数实现(我们称之为处理程序),位于该包脚本文件。...这是一个桥梁,可让您编写可调用本机Objective-C / CocoaJavaScript脚本。...(字符串和数字),通常可以以与JS版本相同方式使用 您可以像在JS中一样读取和写入自定义Objective-C对象属性 您可以使用熟悉JavaScript语法或Objective-C方括号语法来调用自定义...从这个起点开始,您可以通过直接编辑文件文件来扩展您插件。 你可以添加更多代码到你onRun函数,添加更多功能,甚至更多脚本文件。...通过编辑manifest.json插件文件文件,您可以自定义命令名称,输入描述,甚至可以展开插件以定义多个命令。 有关更多信息,请参阅插件包。

    93880

    600个常用Linux命令大全,从A到Z

    用于在列显示文件内容 comm 逐行比较两个已排序文件写入标准输出,共同线条和独特线条 compress 用于减小文件大小,压缩后,文件将可用,并添加 .Z 扩展名 continue 用于在...用于打印给定数字质因数,从命令行给出或从标准输入读取 fc 用于列出、编辑或重新执行先前输入到交互式 shell 命令 fc-cache 扫描字体目录并为使用 fontconfig 进行字体处理应用程序构建字体缓存.../terminal_activity sdiff 用于比较两个文件,然后将结果以并排格式写入标准输出 sed 用于查找、过滤、文本替换、替换和文本操作,插入、删除搜索等。...“systemd”系统和服务管理器状态 T 命令 描述 tac 用于反向连接和打印文件 tail 打印给定输入最后 N 个数据 tar 用于创建存档并提取存档文件 tee 读取标准输入并将其写入标准输出和一个或多个文件...wget 用于从服务器下载文件,即使用户没有登录系统,也可以在后台工作,不妨碍当前进程 whatis 用于获取单行手册页描述 which 用于通过在路径环境变量搜索来定位与给定命令关联可执行文件

    48211

    Linux命令大全,从A到Z都有总结,封神之作!

    comm 逐行比较两个已排序文件写入标准输出,共同线条和独特线条 compress 用于减小文件大小,压缩后,文件将可用,并添加 .Z 扩展名 continue 用于在 for、while...hash 用于维护最近执行程序哈希表 hdparm 用于获取有关硬盘统计信息、更改写入间隔、声音管理和 DMA 设置 Head 打印给定输入前...、数字或任何其他格式说明符 ps 用于列出当前正在运行进程及其 PID 以及一些其他信息,这取决于不同选项 pwd 打印工作目录路径,从根开始...which 用于通过在路径环境变量搜索来定位与给定命令关联可执行文件 while 用于只要 COMMAND 返回 true 就重复执行一组命令 who 用于获取有关当前登录用户信息到系统...diff 程序 zdump 用于打印指定区域中的当前时间,或者您可以说在命令行命名每个区域名称打印当前时间 zgrep 用于从给定文件搜索表达式,即使它被压缩

    2.3K02
    领券