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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【WIN10】程序內文件讀取與保存

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【WIN10】程序內文件讀取與保存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DEMO下載:http://yunpan.cn/cFHIZNmAy4ZtH ?訪問密碼 cf79

?

1.讀取與保存文件

Assets一般被認為是保存用戶文件數據的地方。同時,微軟還支持用戶自己創建文件夾。如下圖:

可以創建自己的文件夾data,當然命名可以任意命名,然後往裡面添加文件。我們再來看看test.txt的屬性,如下圖:

如果開發過WP8程序的人,可能對這個會比較印象深刻。WP8開發中,“生成操作”需要手動設置為“內容”,在WIN10中,已經默認為“內容”了,這才是比較正常的處理,我們加一個文件,不就是為了放到程序內部嗎?為毛還要手動去設置?WIN10開發顯示就比較合理了。

?

我寫了一個 Common 的類,用於打開文件,以讀及寫:

public class Common{public static async Task<Stream> OpenFileForRead(string folder, string fileName, bool installFolder = true){try{StorageFolder storageFolder = null;if (installFolder) storageFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(folder);else storageFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync(folder);StorageFile storageFile = await storageFolder.GetFileAsync(fileName);return await storageFile.OpenStreamForReadAsync();}catch (Exception ex){return null;}}public static async Task<Stream> OpenFileForWrite (string folder, string file){try{StorageFolder rootFolder = ApplicationData.Current.LocalFolder;StorageFolder dstFolder = await rootFolder.CreateFolderAsync(folder, CreationCollisionOption.OpenIfExists);if (dstFolder != null){StorageFile storageFile = await dstFolder.CreateFileAsync(file, CreationCollisionOption.ReplaceExisting);return await storageFile.OpenStreamForWriteAsync();}}catch (Exception){}return null;}}

?

你會發現,它們都是“異步”函數。所以要程序讀取一些信息並顯示時,可能需要一個“委託”,當讀完時,通知界面去顯示相關信息,或是其它處理。

?

*****************************************************************************************************************************************************************

注意上面的代碼,寫文件,只能在該文件夾下寫:ApplicationData.Current.LocalFolder

?安裝目錄?Windows.ApplicationModel.Package.Current.InstalledLocation 是不允許寫的。

*****************************************************************************************************************************************************************

?

我的DEMO中,不僅加入了創建文件的代碼,還加入了創建文件夾的代碼。

?

2.使用Roaming進行保存與讀取數據

這個東東,相當於程序的系統中的配置。使用它進行保存數據的好處是,當程序更新時,你做的保存不會丟失。

如果是使用第一種方法進行保存程序數據的話,當軟件更新時,有可能會將用戶保存的數據覆蓋。那樣問題就比較嚴重了,用戶今天還好好的,晚上WIFI自動更新後,一覺起來,神馬都沒有了,突然間整個人都不好了。

?

微軟提供的Roaming是相當強悍的,可以像Json一樣使用,具體內部是不是使用Json實現,我沒有深入研究過,不過我猜應該是。

可以創建Container,然後在Container中保存一堆[key,value]組合,Container中又可以創建Container。和Json一個樣。這種分層保存數據十分適合軟件吶,如果只有一層[key,value],那要加一堆前輟進行說明這個key是誰誰誰就蛋疼了。

?

讀的例子:

private void readRoamingBtn_Click(object sender, RoutedEventArgs e){var appSetting = ApplicationData.Current.RoamingSettings;var trueContainer = appSetting;if (IsCreateContainer()){ApplicationDataContainer adc = null;if (!appSetting.Containers.TryGetValue("test", out adc)){MessageDialog dlg = new MessageDialog("no container");dlg.ShowAsync();return;}trueContainer = adc;}object testValue = null;if (trueContainer.Values.TryGetValue("key", out testValue)){roadmingReadTxtBox.Text = testValue.ToString();}else{MessageDialog dlg = new MessageDialog("no key");dlg.ShowAsync();}}

?

寫的例子:

private void roamingWriteBtn_Click(object sender, RoutedEventArgs e){var appSetting = ApplicationData.Current.RoamingSettings;var trueContainer = appSetting;if (IsCreateContainer()){trueContainer = MakeSureArticleCfgContainerExist(appSetting, "test");}trueContainer.Values["key"] = roamingWriteTxtBox.Text;}

?

有一個?MakeSureArticleCfgContainerExist 函數,用於確定寫入的文件夾一定存在,如果不存在就創建它:

private ApplicationDataContainer MakeSureArticleCfgContainerExist(ApplicationDataContainer appSetting, string name){ApplicationDataContainer container = null;if (!appSetting.Containers.TryGetValue(name, out container)){container = appSetting.CreateContainer(name, ApplicationDataCreateDisposition.Always);}return container;}

?

3.使用Resource

資源文件又被微軟給閹割了,它只能使用 String.

使用方法:

?1)添加Resource

?菜單:右鍵項目->添加->新建項->資源Resource

?

?2)加載Resource

ResourceLoader rl = new ResourceLoader();txtResource.Text = rl.GetString("String1");

?

[END]

轉載于:https://www.cnblogs.com/lin277541/p/4888256.html

總結

以上是生活随笔為你收集整理的【WIN10】程序內文件讀取與保存的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一级片一区二区三区 | 99久久国产宗和精品1上映 | 久久久久久毛片 | 亚洲欧美视频 | 亚洲国产精品网站 | 色播五月激情五月 | 亚洲人成77777 | av网址在线看 | 欧日韩不卡视频 | 亚洲综合在线中文字幕 | 一炮成瘾1v1高h | 亚洲电影一区二区 | 亚洲成人av网址 | 亚洲午夜精品久久久久久浪潮 | 美女视屏| 午夜8888 | 色综合91| 久久久欧美精品sm网站 | 一及黄色大片 | 免费观看毛片视频 | 国产干b | 亚洲男男网站 | 亚洲午夜久久 | jizz国产免费| 亚洲综合色自拍一区 | 成人日b视频 | 正在播放经典国语对白 | 欧美激情综合色综合啪啪五月 | 国产精品伊人久久 | 色黄啪啪网 | 丰满人妻熟妇乱偷人无码 | 一区二区亚洲精品 | 婷婷中文| 三年大全国语中文版免费播放 | 成人在线h | 成人免费播放视频 | 日日碰碰| 欧美 丝袜 自拍 制服 另类 | 韩日av在线| 韩国三级中文字幕hd久久精品 | 香蕉视频免费在线播放 | 欧美综合专区 | 青娱乐欧美 | 亚洲2022国产成人精品无码区 | 亲子乱子伦xxxx | 黄网站在线观 | 阿v视频在线免费观看 | 少妇高潮迭起 | 97精品国产97久久久久久春色 | 精品h视频 | 国产二区精品视频 | 精品久久久久久久 | 日韩av高清在线观看 | 亚洲影院一区 | 国产专区欧美专区 | 亚洲av激情无码专区在线播放 | 91高潮大合集爽到抽搐 | 国产视频一区二区三区在线播放 | sese视频在线观看 | 又粗又猛又爽又黄少妇视频网站 | 看片网址国产福利av中文字幕 | 国产黄色激情视频 | 婷婷在线免费视频 | 日韩日b视频 | 香蕉一区二区 | 欧美中文视频 | 综合天堂av久久久久久久 | 欧美一卡二卡三卡 | 日韩精品一区二区免费视频 | 欧洲视频一区二区 | 麻豆影视在线播放 | 中国女人内谢69xxxx | 亚洲国产天堂av | 黄色片在线免费看 | 欧美福利视频在线 | 国产一级片网站 | 国产精品h | 自拍偷拍第二页 | 亚洲第99页| 剧情av在线 | 高清一区二区三区四区 | 亚洲综合一区中 | 欧美激情网站 | 国产亚洲女人久久久久毛片 | 懂色av懂色av粉嫩av分享吧 | 四虎黄色影视 | 91av麻豆| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲国产精品久久久久久久 | 久久99精品久久久久 | 天天爱天天射 | 伊人久久五月 | 日本少妇xxxx动漫 | 午夜网| 久久精品欧美一区二区三区麻豆 | 色交视频 | 人善交videos欧美3d动漫 | 免费午夜视频 | 日本福利一区 |