예제 #1
0
        public bool FileExists(FileUri uri)
        {
            switch (uri.Location)
            {
            case StorageLocation.Bundle:

                try
                {
                    using (var stream = new StreamReader(uri.AbsolutePath))
                    {
                        if (stream == null)
                        {
                            return(false);
                        }

                        return(true);
                    }
                }
                catch
                {
                    return(false);
                }

            case StorageLocation.Internal:
                return(File.Exists(uri.AbsolutePath));

            case StorageLocation.External:
                return(File.Exists(uri.AbsolutePath));

            default:
                return(false);
            }
        }
예제 #2
0
        public void MoveFile(FileUri sourceUri, FileUri destinationUri)
        {
            if (destinationUri.Location == StorageLocation.Bundle)
            {
                throw new InvalidOperationException("Unable to copy file inside the bundle.");
            }

            _fileSystemPlatform.MoveFile(sourceUri, destinationUri);
        }
예제 #3
0
        public void DeleteFile(FileUri uri)
        {
            if (uri.Location == StorageLocation.Bundle)
            {
                throw new InvalidOperationException("Unable to delete file inside the bundle.");
            }

            _fileSystemPlatform.DeleteFile(uri);
        }
예제 #4
0
        public ulong GetFileSize(FileUri uri)
        {
            if (!FileExists(uri))
            {
                return(0);
            }

            FileInfo fi = new FileInfo(uri.AbsolutePath);

            return((ulong)fi.Length);
        }
예제 #5
0
        public static NSUrl ToNSUrl(this FileUri uri)
        {
            switch (uri.Location)
            {
            case StorageLocation.Bundle:
            case StorageLocation.Internal:
            case StorageLocation.External:
                return(NSUrl.FromFilename(uri.AbsolutePath));

            default:
                throw new InvalidOperationException("Invalid FileUri type");
            }
        }
예제 #6
0
        public static Android.Net.Uri ToUri(this FileUri uri)
        {
            switch (uri.Location)
            {
            case StorageLocation.Bundle:
                return(Android.Net.Uri.Parse(uri.AbsolutePath.Replace("bundle://", "file:///android_asset/")));

            case StorageLocation.Internal:
                return(Android.Net.Uri.FromFile(new Java.IO.File(uri.AbsolutePath)));

            case StorageLocation.External:
                return(Android.Net.Uri.FromFile(new Java.IO.File(uri.AbsolutePath)));

            default:
                throw new InvalidOperationException("Invalid FileUri type");
            }
        }
예제 #7
0
        public UniversalFileInfo GetFileInfo(FileUri uri)
        {
            if (!FileExists(uri))
            {
                throw new InvalidOperationException("File doesn't exists.");
            }

            FileInfo fi = new FileInfo(uri.AbsolutePath);

            return(new UniversalFileInfo
            {
                CreationTime = fi.CreationTime,
                LastAccessTime = fi.LastAccessTime,
                LastWriteTime = fi.LastWriteTime,
                Length = (ulong)fi.Length
            });
        }
예제 #8
0
        public Stream OpenFile(FileUri uri, UniversalFileMode mode, UniversalFileAccess access, UniversalFileShare share)
        {
            switch (uri.Location)
            {
            case StorageLocation.Bundle:
                return(Application.Context.Assets.Open(uri.RelativePath));

            case StorageLocation.Internal:
                return(File.Open(uri.AbsolutePath, (FileMode)mode, (FileAccess)access, (FileShare)share));

            case StorageLocation.External:
                return(File.Open(uri.AbsolutePath, (FileMode)mode, (FileAccess)access, (FileShare)share));

            default:
                return(null);
            }
        }
예제 #9
0
 public void MoveFile(FileUri sourceUri, FileUri destinationUri)
 {
     File.Move(sourceUri.AbsolutePath, destinationUri.AbsolutePath);
 }
예제 #10
0
 public Stream OpenFile(FileUri uri, UniversalFileMode mode, UniversalFileAccess access, UniversalFileShare share)
 {
     return(File.Open(uri.AbsolutePath, (FileMode)mode, (FileAccess)access, (FileShare)share));
 }
예제 #11
0
 public bool FileExists(FileUri uri)
 {
     return(File.Exists(uri.AbsolutePath));
 }
예제 #12
0
 public UniversalFileInfo GetFileInfo(FileUri uri)
 {
     return(_fileSystemPlatform.GetFileInfo(uri));
 }
예제 #13
0
 public void CopyFile(FileUri sourceUri, FileUri destinationUri, bool overwrite)
 {
     File.Copy(sourceUri.AbsolutePath, destinationUri.AbsolutePath, overwrite);
 }
예제 #14
0
 public void DeleteFile(FileUri uri)
 {
     File.Delete(uri.AbsolutePath);
 }
예제 #15
0
 public bool FileExists(FileUri uri)
 {
     return(_fileSystemPlatform.FileExists(uri));
 }
예제 #16
0
 public ulong GetFileSize(FileUri uri)
 {
     return(_fileSystemPlatform.GetFileSize(uri));
 }
예제 #17
0
 public Stream OpenFile(FileUri uri)
 {
     return(OpenFile(uri, UniversalFileMode.Open, UniversalFileAccess.Read));
 }
예제 #18
0
 public Stream OpenFile(FileUri uri, UniversalFileMode mode, UniversalFileAccess access)
 {
     return(OpenFile(uri, mode, access, UniversalFileShare.None));
 }
예제 #19
0
 public Stream OpenFile(FileUri uri, UniversalFileMode mode, UniversalFileAccess access, UniversalFileShare share)
 {
     return(_fileSystemPlatform.OpenFile(uri, mode, access, share));
 }