win10 uwp 儲存使用者選擇資料夾

2022-01-15 17:53:12 字數 2736 閱讀 5078

如果我們每次把臨時處理的檔案儲存,都要讓使用者選擇一次,使用者會不會覺得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...