public virtual bool WriteToFile(NSString path, bool atomicFlag, bool updateFilenamesFlag)
{
NSFileManager fm = NSFileManager.DefaultManager;
bool success = false;
//NSDebugLLog(@"NSFileWrapper",
// @"writeToFile: %@ atomically: updateFilenames: ", path);
switch (_wrapperType)
{
case GSFileWrapperType.GSFileWrapperDirectoryType:
{
// FIXME - more robust save proceedure when atomicFlag set
NSEnumerator enumerator = ((NSDictionary)_wrapperData).KeyEnumerator();
NSString key;
NSError err = null;
fm.CreateDirectoryAtPath(path, true, _fileAttributes, ref err);
while ((key = (NSString)enumerator.NextObject()) != null)
{
NSString newPath = path.StringByAppendingPathComponent(key);
NSFileWrapper fw = (NSFileWrapper)((NSDictionary)_wrapperData).ObjectForKey(key);
fw.WriteToFile(newPath, atomicFlag, updateFilenamesFlag);
}
success = true;
break;
}
case GSFileWrapperType.GSFileWrapperRegularFileType:
{
if (((NSDictionary)_wrapperData).WriteToFile(path, atomicFlag))
success = fm.ChangeFileAttributes(_fileAttributes, path);
break;
}
//case GSFileWrapperType.GSFileWrapperSymbolicLinkType:
// {
// success = fm.CreateSymbolicLinkAtPath(path, _wrapperData);
// break;
// }
}
if (success && updateFilenamesFlag)
{
SetFilename(path.LastPathComponent());
}
return success;
}