主页 如何在iOS/macOS系统中创建文件时创建唯一的文件名
Post
Cancel

如何在iOS/macOS系统中创建文件时创建唯一的文件名

前言

当我无数次看到大家写代码的时候总是以一个时间戳+arc4random()创建某文件的时候 深感心碎,难道操作系统就没有提供相关的函数么 于是 我找到了如下代码 解决大家因为创建文件重名问题.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* Create a recording file */
    NSString *filePath = [@"~/Movies/AVScreenShackRecording_XXXXXX" stringByStandardizingPath];
    char *screenRecordingFileName = strdup([filePath fileSystemRepresentation]);
    if (screenRecordingFileName)
    {
        int fileDescriptor = mkstemp(screenRecordingFileName);
        if (fileDescriptor != -1)
        {
            NSString *filenameStr = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:screenRecordingFileName length:strlen(screenRecordingFileName)];
            
            NSLog(@"唯一的文件名:%@",filenameStr);
            
        }
        remove(screenRecordingFileName);
        free(screenRecordingFileName);
    }

使用前

过程中

完成之后

切记文件后缀需要 加上 XXXXXX 几个X就代表几位数字+字母混合 注意:最好是6个X或者6个以上 参考Linux

主要的是要明白下面这两个函数

strdup()用于c语言中常用的一种字符串拷贝

mkstemp()函数在系统中以唯一的文件名创建一个文件并打开

OK 希望大家有收获

全文完

该博客文章由作者通过 CC BY 4.0 进行授权。