public Result <LoadedItem <T> > Load(Item <T> item) { T resultObject = default(T); NSFileAttributes attributes = null; attributes = _fileManager.GetAttributes(item.Url.Path); if (item.Type == ItemType.Directory) { NSString[] properties = new[] { NSUrl.IsDirectoryKey, NSUrl.ContentModificationDateKey }; NSError error = null; var urls = _fileManager.GetDirectoryContent(item.Url, NSArray.FromNSObjects(properties), NSDirectoryEnumerationOptions.SkipsHiddenFiles, out error); resultObject = item.Parse(attributes, null, urls); } else { var data = NSData.FromUrl(item.Url); resultObject = item.Parse(attributes, data, null); } return(new Result <LoadedItem <T> >(new LoadedItem <T>(item, attributes, resultObject))); }
public long FileSize(string path) { if (FileExists(path)) { NSError error = null; NSFileAttributes fileAttributes = null; ulong? size = null; UIApplication.SharedApplication.InvokeOnMainThread(() => { fileAttributes = NSFileManager.DefaultManager.GetAttributes(path, out error); }); if (error != null) { _loggingService.LogError(typeof(FileSystemService), new Exception(error.DebugDescription), error.Description); throw new NSErrorException(error); } size = fileAttributes.Size; return(size.HasValue ? (long)size.Value : 0); } return(0); }
public static Item <object> FromDirectory(NSUrl directoryUrl, NSFileAttributes fileAttributes = null) { return(new Item <object>(directoryUrl, fileAttributes, ItemType.Directory, (attributes, data, urls) => { return urls.Select(x => { NSObject resourceObject = null; x.TryGetResource(NSUrl.IsDirectoryKey, out resourceObject); bool isDirectoryObject = false; if (resourceObject != null) { var convertedNsObject = resourceObject.ToObject(typeof(bool)); if (convertedNsObject != null) { isDirectoryObject = (bool)convertedNsObject; } } return At(x, attributes, isDirectoryObject); }).ToArray(); })); }
void CopyFileToDocumentsDirectory(NSUrl fromUrl) { NSUrl toURL = DocumentsDirectory.Append(fromUrl.LastPathComponent, false); bool success = false; NSError error; NSFileCoordinator fileCoordinator = new NSFileCoordinator(); fileCoordinator.CoordinateWriteWrite(fromUrl, NSFileCoordinatorWritingOptions.ForMoving, toURL, NSFileCoordinatorWritingOptions.ForReplacing, out error, (src, dst) => { NSFileManager fileManager = new NSFileManager(); success = fileManager.Copy(src, dst, out error); if (success) { var attributes = new NSFileAttributes { FileExtensionHidden = true }; fileManager.SetAttributes(attributes, dst.Path); Console.WriteLine("Moved file: {0} to: {1}.", src.AbsoluteString, dst.AbsoluteString); } }); // In your app, handle this gracefully. if (!success) { Console.WriteLine("Couldn't move file: {0} to: {1}. Error: {3}.", fromUrl.AbsoluteString, toURL.AbsoluteString, error.Description); } }
public Item(NSUrl url, NSFileAttributes attributes, ItemType type, Func <NSFileAttributes, NSData, NSUrl[], T> parse) { Url = url; _attributes = attributes; Type = type; _parse = parse; }
void CopyFileToDocumentsDirectory(NSUrl fromUrl) { NSUrl toURL = DocumentsDirectory.Append (fromUrl.LastPathComponent, false); bool success = false; NSError error; NSFileCoordinator fileCoordinator = new NSFileCoordinator (); fileCoordinator.CoordinateWriteWrite (fromUrl, NSFileCoordinatorWritingOptions.ForMoving, toURL, NSFileCoordinatorWritingOptions.ForReplacing, out error, (src, dst) => { NSFileManager fileManager = new NSFileManager(); success = fileManager.Copy(src, dst, out error); if (success) { var attributes = new NSFileAttributes { ExtensionHidden = true }; fileManager.SetAttributes (attributes, dst.Path); Console.WriteLine ("Moved file: {0} to: {1}.", src.AbsoluteString, dst.AbsoluteString); } }); // In your app, handle this gracefully. if (!success) Console.WriteLine ("Couldn't move file: {0} to: {1}. Error: {3}.", fromUrl.AbsoluteString, toURL.AbsoluteString, error.Description); }
public Task UpdateMultipleEntities(IEnumerable <Session> data) { return(Task.Run(() => { var fileManager = new NSFileManager(); var appGroupContainer = fileManager.GetContainerUrl($"group.{AboutThisApp.PackageName}"); var appGroupContainerPath = appGroupContainer.Path; var sessionsFilePath = Path.Combine(appGroupContainerPath, "sessions.json"); if (fileManager.FileExists(sessionsFilePath)) { NSError error; fileManager.Remove(sessionsFilePath, out error); } var attributes = new NSFileAttributes { Type = NSFileType.Regular }; var json = JsonConvert.SerializeObject(data.Where(s => s.IsFavorite).ToList()); var fileData = NSData.FromString(json); fileManager.CreateFile(sessionsFilePath, fileData, attributes); var url = NSUrl.FromFilename(sessionsFilePath); url.SetResource(NSUrl.IsExcludedFromBackupKey, new NSNumber(true)); var settings = new NSUserDefaults($"group.{AboutThisApp.PackageName}", NSUserDefaultsType.SuiteName); settings.SetBool(true, "FavoritesInitialized"); settings.Synchronize(); UpdateWidget(); })); }
public static Task<NSUrl> CopyToDocumentsDirectoryAsync(NSUrl fromUrl) { var tcs = new TaskCompletionSource<NSUrl>(); NSUrl localDocDir = GetDocumentDirectoryUrl (); NSUrl toURL = localDocDir.Append (fromUrl.LastPathComponent, false); bool success = false; NSError coordinationError, copyError = null; NSFileCoordinator fileCoordinator = new NSFileCoordinator (); ThreadPool.QueueUserWorkItem (_ => { fileCoordinator.CoordinateReadWrite (fromUrl, 0, toURL, NSFileCoordinatorWritingOptions.ForReplacing, out coordinationError, (src, dst) => { NSFileManager fileManager = new NSFileManager(); success = fileManager.Copy(src, dst, out copyError); if (success) { var attributes = new NSFileAttributes { ExtensionHidden = true }; fileManager.SetAttributes (attributes, dst.Path); Console.WriteLine ("Copied file: {0} to: {1}.", src.AbsoluteString, dst.AbsoluteString); } }); // In your app, handle this gracefully. if (!success) Console.WriteLine ("Couldn't copy file: {0} to: {1}. Error: {2}.", fromUrl.AbsoluteString, toURL.AbsoluteString, (coordinationError ?? copyError).Description); tcs.SetResult(toURL); }); return tcs.Task; }
private void UpdateFileStatus(FileTransmissionEvent transmission, TransmissionProgressEventArgs e) { if (e == null) { e = transmission.Status; } string filePath = transmission.CachePath; if (filePath == null || !File.Exists(filePath)) { filePath = transmission.Path; } if (!File.Exists(filePath)) { Logger.Error(String.Format("None exist {0} for file status update", filePath)); return; } string extendAttrKey = "com.apple.progress.fractionCompleted"; if ((e.Aborted == true || e.Completed == true || e.FailedException != null)) { Syscall.removexattr(filePath, extendAttrKey); try { NSFileAttributes attr = NSFileManager.DefaultManager.GetAttributes(filePath); attr.CreationDate = (new FileInfo(filePath)).CreationTime; NSFileManager.DefaultManager.SetAttributes(attr, filePath); } catch (Exception ex) { Logger.Error(String.Format("Exception to set {0} creation time for file status update: {1}", filePath, ex)); } } else { double percent = transmission.Status.Percent.GetValueOrDefault() / 100; if (percent < 1) { Syscall.setxattr(filePath, extendAttrKey, Encoding.ASCII.GetBytes(percent.ToString())); try { NSFileAttributes attr = NSFileManager.DefaultManager.GetAttributes(filePath); attr.CreationDate = new DateTime(1984, 1, 24, 8, 0, 0, DateTimeKind.Utc); NSFileManager.DefaultManager.SetAttributes(attr, filePath); } catch (Exception ex) { Logger.Error(String.Format("Exception to set {0} creation time for file status update: {1}", filePath, ex)); } } else { Syscall.removexattr(filePath, extendAttrKey); try { NSFileAttributes attr = NSFileManager.DefaultManager.GetAttributes(filePath); attr.CreationDate = (new FileInfo(filePath)).CreationTime; NSFileManager.DefaultManager.SetAttributes(attr, filePath); } catch (Exception ex) { Logger.Error(String.Format("Exception to set {0} creation time for file status update: {1}", filePath, ex)); } } } }
public LoadedItem(Item <T> item, NSFileAttributes attributes, T resource) { Name = item.Name; Url = item.Url; Type = item.Type; Attributes = attributes; Resource = resource; }
public UIViewController GetViewControllerForItem(NSUrl atUri, NSData data, NSFileAttributes fileAttribute) { var player = new AVPlayer(atUri); return(new AVPlayerViewController() { Player = player }); }
/// <summary> /// Removes the file progress if available. /// </summary> /// <param name="path">Path of the file/folder</param> public static void RemoveFileProgress(string path) { try { Syscall.removexattr(path, extendAttrKey); NSFileAttributes attr = NSFileManager.DefaultManager.GetAttributes(path); attr.CreationDate = (new FileInfo(path)).CreationTime; NSFileManager.DefaultManager.SetAttributes(attr, path); } catch (Exception ex) { Logger.Debug(String.Format("Exception to unset {0} creation time for file status update: {1}", path, ex)); } }
public static void SetFileProgress(string path, double percent) { try { Syscall.setxattr(path, extendAttrKey, Encoding.ASCII.GetBytes(percent.ToString())); NSFileAttributes attr = NSFileManager.DefaultManager.GetAttributes(path); attr.CreationDate = new DateTime(1984, 1, 24, 8, 0, 0, DateTimeKind.Utc); NSFileManager.DefaultManager.SetAttributes(attr, path); } catch (Exception ex) { Logger.Debug(String.Format("Exception to set {0} creation time for file status update: {1}", path, ex)); } }
private static FileAttributeViewModel MakeFileTypeItem(NSFileAttributes attributes) { string fileType = attributes?.Type?.ToString() ?? Empty; var keyLabel = NSBundle.MainBundle.LocalizedString("Kind", Empty); if (keyLabel == null) { return(null); } return(new FileAttributeViewModel(keyLabel, fileType)); }
private static FileAttributeViewModel MakeFileSizeItem(NSFileAttributes attributes) { var byteCount = attributes.Size ?? 0; var keyLabel = NSBundle.MainBundle.LocalizedString("Size", Empty); if (keyLabel == null) { return(null); } return(new FileAttributeViewModel(keyLabel, sizeFormatter.Format(Convert.ToInt64(byteCount)))); }
private static FileAttributeViewModel MakeModificationDateItem(NSFileAttributes attributes) { var modificationDate = attributes.ModificationDate; var keyLabel = NSBundle.MainBundle.LocalizedString("Modified", Empty); if (keyLabel == null) { return(null); } return(new FileAttributeViewModel(keyLabel, NSDateFormatter.ToLocalizedString(modificationDate, NSDateFormatterStyle.Medium, NSDateFormatterStyle.Medium))); }
private void ItemLoadCompletedUrl(NSObject url) { log.Debug("ItemLoadCompletedUrl called of type: " + url.GetType().ToString()); try { NSUrl fileUrl = url as NSUrl; if (fileUrl != null) { log.Debug("Loading Attachment: " + fileUrl.ToString()); NSData data = null; string path = fileUrl.Path; DateTime creationDate = DateTime.Now; string fileName = Path.GetFileName(path); string extension = Path.GetExtension(fileUrl.Path); if (string.IsNullOrWhiteSpace(fileName)) { try { NSFileAttributes attributes = NSFileManager.DefaultManager.GetAttributes(fileUrl.Path); creationDate = (DateTime)attributes.CreationDate; } catch (Exception ex) { log.Debug(ex, "Unable to get Attributes for path: " + fileUrl.Path); } fileName = "FILE_" + creationDate.ToString("yyyyMMddTHHmmssFFF") + extension; } data = NSData.FromUrl(fileUrl); Stream stream = data.AsStream(); attachments.Add(stream); log.Info("Added Stream for File: " + fileName); } } catch (Exception ex) { log.Error(ex, "Error loading Attachment: " + url.ToString()); } this.totalNumberOfAttachmentsLoaded++; CheckAttachmentsProcessed(); }
/// <summary> /// Exports the image as a PDF with the given file name. /// </summary> /// <param name="filename">Filename.</param> public static void ExportAsPDF(this UIImage image, string filename, CGPDFInfo info, double horizRes = 96, double vertRes = 96) { var width = (double)image.Size.Width * (double)image.CurrentScale * 72 * horizRes; var height = (double)image.Size.Height * (double)image.CurrentScale * 72 * vertRes; var pdfFile = new NSMutableData(); pdfFile.Init(); var pdfConsumer = new CGDataConsumer(pdfFile); var mediaBox = new CGRect(0, 0, width, height); using (var context = new CGContextPDF(pdfConsumer, mediaBox, info)) { context.BeginPage(new CGPDFPageInfo()); context.DrawImage(mediaBox, image.CGImage); context.EndPage(); } var attrs = new NSFileAttributes(); NSFileManager.DefaultManager.CreateFile(filename, pdfFile, attrs); }
static Task <NSUrl> CopyToDocumentsDirectoryAsync(NSUrl fromUrl) { var tcs = new TaskCompletionSource <NSUrl>(); NSUrl localDocDir = GetDocumentDirectoryUrl(); NSUrl toURL = localDocDir.Append(fromUrl.LastPathComponent, false); bool success = false; NSError coordinationError, copyError = null; NSFileCoordinator fileCoordinator = new NSFileCoordinator(); ThreadPool.QueueUserWorkItem(_ => { fileCoordinator.CoordinateReadWrite(fromUrl, 0, toURL, NSFileCoordinatorWritingOptions.ForReplacing, out coordinationError, (src, dst) => { NSFileManager fileManager = new NSFileManager(); success = fileManager.Copy(src, dst, out copyError); if (success) { var attributes = new NSFileAttributes { FileExtensionHidden = true }; fileManager.SetAttributes(attributes, dst.Path); Console.WriteLine("Copied file: {0} to: {1}.", src.AbsoluteString, dst.AbsoluteString); } }); // In your app, handle this gracefully. if (!success) { Console.WriteLine("Couldn't copy file: {0} to: {1}. Error: {2}.", fromUrl.AbsoluteString, toURL.AbsoluteString, (coordinationError ?? copyError).Description); } tcs.SetResult(toURL); }); return(tcs.Task); }
public UIViewController GetViewControllerForItem(NSUrl atUri, NSData data, NSFileAttributes fileAttribute) { var image = new UIImage(data); return(new ImageViewController(image)); }
public UIViewController GetViewControllerForItem(NSUrl atUri, NSData data, NSFileAttributes fileAttribute) { return(new WebViewController(atUri)); }
public UIViewController GetViewControllerForItem(NSUrl atUri, NSData data, NSFileAttributes fileAttribute) { return(new UnknownFileTypeViewController(atUri.LastPathComponent)); }
public T Parse(NSFileAttributes fileAttributes, NSData data, NSUrl[] url) => _parse(fileAttributes, data, url);
public static Item <object> FromFile(NSUrl url, NSFileAttributes attributes, bool isDirectory) { return(new Item <object>(url, attributes, ItemType.File, (fileAttributes, data, urls) => data)); }
public static Item <object> At(NSUrl url, NSFileAttributes attributes = null, bool isDirectory = false) { return(isDirectory ? FromDirectory(url, attributes) : FromFile(url, attributes, isDirectory)); }