日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows 8文件操作帮助类FileHelper

發布時間:2024/1/17 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows 8文件操作帮助类FileHelper 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/保存在應用程序本地目錄的。也就是在用戶名/appdata/local/packages/程序ID/localstate

// FileType的代表是根目錄下的文件夾

public enum FileType{Book = 1,Theme,Configuration,Log,Local}/// <summary>/// 此類用于對應用程序根目錄的文件進行操作/// </summary>public class FileHelper{//http://msdn.microsoft.com/zh-cn/library/windows/apps/hh465262.aspxStorageFolder localFolder = ApplicationData.Current.LocalFolder;private readonly string bookFolder = "Book";private readonly string themeFolder = "Theme";private readonly string configFolder = "Configuration";//private readonly string booktypeFolder = "BookType";private readonly string logFolder = "Log";/// <summary>/// 打開讀取文件,返回文件流/// </summary>/// <param name="fileName"></param>/// <returns></returns>public async Task<Stream> OpenReadFile(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.GetFileAsync(fileName);if (sfile != null){return await sfile.OpenStreamForReadAsync();}}catch (Exception){}return null;}#region 返回不同類型的文件夾操作類public async Task<StorageFolder> CheckFolder(FileType ft){StorageFolder sf = null;switch (ft){case FileType.Book:sf = await localFolder.CreateFolderAsync(bookFolder, CreationCollisionOption.OpenIfExists);break;case FileType.Theme:sf = await localFolder.CreateFolderAsync(themeFolder, CreationCollisionOption.OpenIfExists);break;case FileType.Configuration:sf = await localFolder.CreateFolderAsync(configFolder, CreationCollisionOption.OpenIfExists);break;case FileType.Log:sf = await localFolder.CreateFolderAsync(logFolder, CreationCollisionOption.OpenIfExists);break;case FileType.Local:sf = localFolder;break;default:sf = localFolder;break;}return sf;}#endregion/// <summary>/// 打開寫入文件,返回文件流/// </summary>/// <param name="fileName"></param>/// <returns></returns>public async Task<Stream> OpenWriteFile(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.GetFileAsync(fileName);if (sfile != null){return await sfile.OpenStreamForWriteAsync();}}catch (Exception){}return null;}public async Task<Stream> OpenReplace(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);return await sf.OpenStreamForWriteAsync(fileName, CreationCollisionOption.ReplaceExisting);}catch (Exception){}return null;}public async Task<IRandomAccessStream> ReadWriteFile(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.GetFileAsync(fileName);if (sfile != null){IRandomAccessStream ra = await sfile.OpenAsync(FileAccessMode.ReadWrite);return ra;}}catch (Exception ex){Debug.WriteLine(ex.Message);}return null;}public async Task SaveFile(string str, string fileName, FileType ft){using (Stream stream = await OpenWriteFile(fileName, ft)){if (stream == null){StorageFile sf = await CreateFile(fileName, ft);using (Stream s = await sf.OpenStreamForWriteAsync()){using (StreamWriter sw = new StreamWriter(s)){await sw.WriteAsync(str);}}}}}public async Task SaveFile(Stream str, string fileName, FileType ft){using (Stream stream = await OpenWriteFile(fileName, ft)){if (stream == null){StorageFile sf = await CreateFile(fileName, ft);using (Stream s = await sf.OpenStreamForWriteAsync()){byte[] b = new byte[str.Length];str.Read(b, 0, b.Length);s.Write(b, 0, b.Length);}}}}public async Task SaveFile(byte[] b, string fileName, FileType ft){using (Stream stream = await OpenWriteFile(fileName, ft)){if (stream == null){StorageFile sf = await CreateFile(fileName, ft);using (Stream s = await sf.OpenStreamForWriteAsync()){s.Write(b, 0, b.Length);}}}}/// <summary>/// 保存系統文件/// </summary>/// <param name="str"></param>/// <param name="path"></param>/// <returns></returns>public async Task SaveFile(Stream str, string path){StorageFolder sf = await StorageFolder.GetFolderFromPathAsync(Path.GetDirectoryName(path));StorageFile sfile = await sf.CreateFileAsync(Path.GetFileName(path), CreationCollisionOption.ReplaceExisting);using (Stream s = await sfile.OpenStreamForWriteAsync()){byte[] b = new byte[str.Length];str.Read(b, 0, b.Length);s.Write(b, 0, b.Length);}}/// <summary>/// 創建文件 ,并且返回創建的文件對象/// </summary>/// <param name="fileName"></param>/// <returns></returns>public async Task<StorageFile> CreateFile(string fileName, FileType ft){StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);return sfile;}/// <summary>/// 創建文件 ,并且返回創建的文件對象/// </summary>/// <param name="fileName"></param>/// <returns></returns>public async Task<bool> FileExists(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.GetFileAsync(fileName);if (sfile == null){return false;}return true;}catch (Exception){}return false;}/// <summary>/// 根據后綴尋找文件 /// </summary>/// <param name="filter"></param>public async Task<string[]> FindFile(string filter, FileType ft){StorageFolder sf = await CheckFolder(ft);IReadOnlyList<StorageFile> all = await sf.GetFilesAsync();List<string> list = new List<string>();if (all != null && all.Count > 0){foreach (var item in all){if (item.FileType.ToLower() == filter.ToLower()){list.Add(item.Name);}}if (list.Count > 0){return list.ToArray();}}return new string[0];}/// <summary>/// 刪除文件/// </summary>/// <param name="fileName"></param>public async Task DeleteFile(string fileName, FileType ft){try{StorageFolder sf = await CheckFolder(ft);StorageFile sfile = await sf.GetFileAsync(fileName);if (sfile != null){await sfile.DeleteAsync();}}catch (Exception){}}ApplicationDataContainer setting = ApplicationData.Current.LocalSettings;/// <summary>/// 保存設置/// </summary>/// <param name="key"></param>/// <param name="value"></param>public void SaveSetting(string key, object value){setting.Values[key] = value;}/// <summary>/// 刪除設置:普通鍵值對/// </summary>/// <param name="key"></param>public void DeleteSetting(string key){if (setting.Values.ContainsKey(key)){setting.Values.Remove(key);}}/// <summary>/// 獲取setting/// </summary>/// <param name="key"></param>/// <returns></returns>public object GetSetting(string key){object obj = null;if (setting.Values.ContainsKey(key)){obj = setting.Values[key];}return obj;}/// <summary>/// 是否存在這個設置/// </summary>/// <param name="key"></param>/// <returns></returns>public bool HasSetting(string key){if (setting.Values.ContainsKey(key)){return true;}return false;}public async Task SaveXml<T>(T t, string fileName, FileType ft){Stream stream = await OpenReplace(fileName, ft);if (stream == null){StorageFile sf = await CreateFile(fileName, ft);stream = await sf.OpenStreamForWriteAsync();}XmlSerializer serializer = new XmlSerializer(typeof(T));try{serializer.Serialize(stream, t);}catch (Exception ex){Debug.WriteLine(ex.Message);}finally{stream.Dispose();}}public async Task<T> ReadXml<T>(string fileName, FileType ft){Stream stream = await OpenReadFile(fileName, ft);if (stream != null && stream.Length > 0){try{XmlSerializer serializer = new XmlSerializer(typeof(T));T t = (T)serializer.Deserialize(stream);return t;}catch (Exception ex){Debug.WriteLine(ex.Message);}finally{stream.Dispose();}}return default(T);}//var uri = new Windows.Foundation.Uri('ms-appx:///images/logo.png');//var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);/// <summary>/// 讀取應用程序文件/// </summary>/// <param name="path">文件路徑 ,按普通路徑來給 /Images/1.jpg</param>/// <returns></returns>public async Task<Stream> ReadAppFile(string path){Uri baseUri = new Uri("ms-appx://");Uri uri = new Uri(baseUri, path);try{StorageFile sf = await StorageFile.GetFileFromApplicationUriAsync(uri);if (sf != null){return await sf.OpenStreamForReadAsync();}}catch (Exception ex){Debug.WriteLine(ex.Message);}return null;}}

?

轉載于:https://www.cnblogs.com/poorpan/archive/2012/08/02/windows%e6%96%87%e4%bb%b6%e6%93%8d%e4%bd%9c.html

總結

以上是生活随笔為你收集整理的windows 8文件操作帮助类FileHelper的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。