How do I create a temporary file with Cocoa?

Viewed 41540

Years ago when I was working with C# I could easily create a temporary file and get its name with this function:

Path.GetTempFileName();

This function would create a file with a unique name in the temporary directory and return the full path to that file.

In the Cocoa API's, the closest thing I can find is:

NSTemporaryDirectory

Am I missing something obvious or is there no built in way to do this?

11 Answers

[Note: This applies to the iPhone SDK, not the Mac OS SDK]

From what I can tell, these functions aren't present in the SDK (the unistd.h file is drastically pared down when compared to the standard Mac OS X 10.5 file). I would use something along the lines of:

[NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"txt"]];

Not the prettiest, but functional

You could use mktemp to get a temp filename.

Don't use legacy APIs like NSTemporaryDirectory, get a proper URL instead from FileManager.

let tmpURL = FileManager
    .default
    .temporaryDirectory
    .appendingPathComponent(UUID().uuidString)

You'd still have to create the directory.

You could use an NSTask to uuidgen to get a unique file name, then append that to a string from NSTemporaryDirectory(). This won't work on Cocoa Touch. It is a bit long-winded though.

Related