如果我們每次把臨時處理的檔案儲存,都要讓使用者選擇一次,使用者會不會覺得uwp垃圾?如果我們每次開啟應用,都從某個檔案讀取,而這個檔案不在應用目錄和已知的目錄,那麼每次都需要使用者選擇,使用者會不會覺得uwp垃圾?
其實垃圾wr給了乙個類,我們可以用這個類獲得使用者選擇過的檔案、資料夾。我們可以儲存使用者選擇過的檔案和資料夾。
這個類在windows.storage.accesscache
,可以使用最近使用或乙個比較大的儲存,最近使用自有25個,我這裡就不說。futureaccesslist可以儲存1k個檔案或資料夾,但垃圾wr給了我們這個東西,找不到他就給1k而不是無限。
要使用這個類,其實我們就只用三個函式,其中我們需要知道,使用futureaccesslist拿出乙個我們儲存的檔案或資料夾需要乙個token。
我們先從讓使用者選擇選擇資料夾,選擇資料夾需要folderpicker。
不知道folderpicker需要filetypefilter,這個設計。我們需要給他乙個值,開頭是」.」
folderpicker pick=new folderpicker();
pick.filetypefilter
.add(".png");
然後讓使用者選擇,這裡是非同步,我們可以讓使用者選擇,然後我們做我們的。
iasyncoperationfoldertask= pick.picksinglefolderasync();
//做我們的
storagefolder folder = await foldertask;
我們可以省一點,讓使用者選擇我們不做什麼
var folder =await pick.picksinglefolderasync();
判斷使用者選擇,如果有選擇folder !=null
判斷選擇我們需要把它放進futureaccesslist,放進去可以拿到token
if (folder != null)
然後我們需要把token放到我們本地檔案的位置。
我放在account/account.json
先拿到本地資料夾
string folderstr = "account"
;.localfolder
;
建立乙個資料夾account,因為如果是第一次我們就沒有資料夾,如果不是我們就有
try
catch (filenotfoundexception)
建立檔案
storagefile file = await folder.createfileasync(
folderstr+".json", creationcollisionoption.replaceexisting);
因為我們就儲存一次,乙個好的做法是建立temp,然後做完所有再把原來的改名字為以前做的,然後把temp改名字為account.json,注意儲存原先改名字的檔案,並把原先改名字的之前的檔案刪除。
如果我們在儲存失敗,那麼我們的原先檔案不會影響,如果我們儲存檔案在改名字出錯了,可以通過原先恢復,這樣才好。
我們使用json儲存,使用我們第三方。
var json = jsonserializer.create();
我們需要用stringbuilder來把json序列存放,如果直接用
json.serialize(new jsontextwriter(
new streamwriter(await file.openstreamforwriteasync())), account);
就會出現下次使用unauthorizedexception,uwp unauthorizedexception 建立檔案在localfolder一般就是我們使用json錯誤
account就是我們的資料。
我寫的方法應該可以是可以把token儲存的
stringbuilder str = new stringbuilder();
stringwriter stream=new stringwriter(str);
json.serialize(new jsontextwriter(
stream ), account);
using (storagestreamtransaction transaction = await file.opentransactedwriteasync())
}
我們應用開始我們就可以讀取
讀取就可以用json的
storagefile file = await folder.getfileasync(folderstr + ".json");
var json = jsonserializer.create();
account = json.deserialize(new jsontextreader(
new streamreader(await file.openstreamforreadasync())));
folder要進去account
我們從futureaccesslist拿檔案
.getfileasync(account.token);
win10 uwp 繫結密碼
win10 下,密碼框無法繫結到viewmodel,password是不可以繫結。我們可以自己使用簡單方法去繫結 我們之前在wpf 使用繫結密碼框,我寫了一篇,關於如何繫結,我提供乙個我自己試了可以的類。首先,我們新建乙個類,這個類是讓 passwordbox 可以繫結password。uwp讓 p...
win10 uwp 重啟軟體
在16299支援在軟體自己重啟,不需要讓使用者點選關閉然後啟動,雖然我還不知道這個有什麼用。本文告訴大家如何讓軟體關閉重新開啟 首先需要使用的版本是 16299 然後使用 requestrestartasync 方法就可以關閉軟體重新開啟。下面就是簡單的軟體 100 horizontalalignm...
win10 uwp 繫結密碼
win10 下,密碼框無法繫結到viewmodel,password是不可以繫結。我們可以自己使用簡單方法去繫結 我們之前在wpf 使用繫結密碼框,我寫了一篇,關於如何繫結,我提供乙個我自己試了可以的類。首先,我們新建乙個類,這個類是讓 passwordbox 可以繫結password。uwp讓 p...