up
This commit is contained in:
217
Assets/BestHTTP/PlatformSupport/IO/Infos.cs
Normal file
217
Assets/BestHTTP/PlatformSupport/IO/Infos.cs
Normal file
@@ -0,0 +1,217 @@
|
||||
#if NETFX_CORE
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Windows.Storage;
|
||||
using Windows.Storage.Streams;
|
||||
using Windows.Foundation;
|
||||
|
||||
namespace BestHTTP.PlatformSupport.IO
|
||||
{
|
||||
public abstract class FileSystemInfo
|
||||
{
|
||||
public FileAttributes Attributes
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetAttributes();
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime CreationTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetCreationTime().DateTime;
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime CreationTimeUtc
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetCreationTime().ToUniversalTime().DateTime;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract bool Exists { get; }
|
||||
|
||||
public string Extention
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.GetExtension(this.FullName);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract string FullName { get; }
|
||||
|
||||
public abstract string Name { get; }
|
||||
|
||||
internal abstract FileAttributes GetAttributes();
|
||||
|
||||
internal abstract DateTimeOffset GetCreationTime();
|
||||
|
||||
public abstract void Delete();
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
this.RefreshInternal();
|
||||
}
|
||||
|
||||
internal abstract void RefreshInternal();
|
||||
}
|
||||
|
||||
public sealed class DirectoryInfo : FileSystemInfo
|
||||
{
|
||||
private string path;
|
||||
private StorageFolder folder;
|
||||
|
||||
public override bool Exists
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
this.RefreshInternal();
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string FullName
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.folder.Path;
|
||||
}
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.folder.Name;
|
||||
}
|
||||
}
|
||||
|
||||
public DirectoryInfo(string path)
|
||||
{
|
||||
if (path == null)
|
||||
throw new ArgumentNullException();
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
throw new ArgumentException();
|
||||
try
|
||||
{
|
||||
this.path = path;
|
||||
this.folder = FileHelper.GetFolderForPathOrURI(path);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw new IOException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
internal DirectoryInfo(string path, StorageFolder folder)
|
||||
{
|
||||
this.path = path;
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
internal override FileAttributes GetAttributes()
|
||||
{
|
||||
try
|
||||
{
|
||||
return File.WinAttributesToSysAttributes(this.folder.Attributes);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.GetAttributes: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.GetAttributes: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw new IOException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
internal override DateTimeOffset GetCreationTime()
|
||||
{
|
||||
try
|
||||
{
|
||||
return this.folder.DateCreated;
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.GetCreationTime: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.GetCreationTime: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw new IOException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
try
|
||||
{
|
||||
WindowsRuntimeSystemExtensions.AsTask(this.folder.DeleteAsync()).Wait();
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.Delete: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.Delete: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw new IOException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
internal override void RefreshInternal()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.folder = FileHelper.GetFolderForPathOrURI(this.path);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.RefreshInternal: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("DirectoryInfo.RefreshInternal: " + ex.Message + "\n" + ex.StackTrace);
|
||||
throw new IOException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.path;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.path.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user