path - 如何使用 Swift 的文件路径 API 获取文档目录并创建文件名

标签 path avfoundation swift xcode6 nsdocumentdirectory

我有这段代码可以用 AVFoundation 录制视频,但我不知道如何转换为 Swift

- (void)startRecording 
{    
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd-HH-mm-ss"];
    NSString* dateTimePrefix = [formatter stringFromDate:[NSDate date]];

    int fileNamePostfix = 0;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = nil;
    do
        filePath =[NSString stringWithFormat:@"/%@/%@-%i.mp4", documentsDirectory, dateTimePrefix, fileNamePostfix++];
    while ([[NSFileManager defaultManager] fileExistsAtPath:filePath]);

    NSURL *fileURL = [NSURL URLWithString:[@"file://" stringByAppendingString:filePath]];
    [self.fileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];
}

我不知道如何在 Swift 中使用此路径..

谢谢!!

最佳答案

这是获取文档目录的方法

// NSArray *paths = NSSearchPathForDirectoriesInDomains(
//   NSDocumentDirectory, NSUserDomainMask, YES);
let paths = NSSearchPathForDirectoriesInDomains(
      .DocumentDirectory, .UserDomainMask, true)

// NSString *documentsDirectory = [paths objectAtIndex:0];
let documentsDirectory = paths[0] as String

下面是如何使用后缀选择文件名

var filePath:String? = nil
var fileNamePostfix = 0
do {
    // filePath =[NSString stringWithFormat:@"/%@/%@-%i.mp4", 
    //   documentsDirectory, dateTimePrefix, fileNamePostfix++];
    filePath = 
       "\(documentsDirectory)/\(dateTimePrefix)-\(fileNamePostfix++).mp4"
} while (NSFileManager.defaultManager().fileExistsAtPath(filePath))

此代码只是您代码的直接移植,只是我删除了 documentsDirectory 之前的 /,因为它已经是一个绝对路径。

关于path - 如何使用 Swift 的文件路径 API 获取文档目录并创建文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365001/

相关文章:

c# - 从完整文件名路径获取文件夹名称

swift - 到底如何在 swift 4 中成功传输远程 mp3 文件?

ios - 从另一个值创建新的字典

swift - 如何在 Swift 中的英镑符号字符串中应用空格?

php - require_once 无法打开流 : No such file or directory - even if relative path seems to be correct(? )

c - 为什么我的文件的相对路径不能被我的应用程序识别?

objective-c - Cocoa:从文件加载的 AVAsset 有 0 个轨道

ios - 授权给 HealthKit 时,错误 '(_, _) -> Void' 无法转换为 'HealthManager'

path - 默认 PATH 变量设置为 .bash_profile 为空

swift - 如何在 macOS 中使用 AVFoundation 采集视频数据?