Given an NSFileWrapper object (for a file or directory), is there any way to get the full path for the location of the actual file on the disk?
[fileWrapper filename]
only returns the file name, not the path, so it isn't what I'm looking for.
Given an NSFileWrapper object (for a file or directory), is there any way to get the full path for the location of the actual file on the disk?
[fileWrapper filename]
only returns the file name, not the path, so it isn't what I'm looking for.
No, there's no way to get the full path from NSFileWrapper
.
NSFileWrapper
in NSDcoument
. See my answer. –
Polariscope If you're using NSDocument
you can get the path of regular-file file wrappers with a little hack.
First create a NSFileWrapper
subclass and overload the regular-file methods that receive a URL to store a copy of it.
@implementation RMFileWrapper
- (id) initWithURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError *__autoreleasing *)outError {
if (self = [super initWithURL:url options:options error:outError]) {
self.originalURL = url;
}
return self;
}
- (BOOL) readFromURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError *__autoreleasing *)outError {
BOOL successful = [super readFromURL:url options:options error:outError];
if (successful) {
self.originalURL = url;
}
return successful;
}
@end
Then add this NSFileWrapper
category:
@implementation NSFileWrapper(bestURLWithDocument)
- (NSURL*) bestURLInDocument:(SBDocument*)document {
if (document.fileURL && self.filename) {
NSString* path = [document.fileURL.path stringByAppendingPathComponent:self.filename];
return [NSURL fileURLWithPath:path];
} else if ([self isKindOfClass:[RMFileWrapper class]]) {
RMFileWrapper *fileWrapper = (RMFileWrapper*) self;
return fileWrapper.originalURL;
}
return nil;
}
@end
bestURLInDocument:
will return the url of the file-system node if available, or the original file url if not.
The above code assumes that you're not nesting directory file wrappers.
NSDocument
/UIDocument
then use self.fileURL
–
Camboose You can append path components to the UIDocument fileURL.
Swift 5.2
document.fileURL.appendingPathComponent("MyFolder", isDirectory: true).appendingPathComponent("MyImage.png", isDirectory: false)
© 2022 - 2024 — McMap. All rights reserved.
NSDocument
.... zedkep.com/blog/index.php?/archives/… – PlatyNSDocument
, and I did see that post. My only concern is that the document could be moved to a new location while open, and this is handled transparently. But if I try to access a file by the old path, it'll crash. – SolemnNSDocument
to tell me when the file physically moves or is renamed? – Solemn