Windows Store App 使用者庫檔案操作

2021-09-25 18:30:43 字數 2672 閱讀 9894

1)獲取使用者庫位置

如果想要通過應用程式在使用者庫中建立檔案,首先需要獲得使用者庫中指定的位置,例如庫、文件庫等。這裡值得注意的是,在獲取使用者庫的位置之前,必須在

windows

應用商店專案的清單檔案

中開啟相應的訪問許可權,如果應用需要訪問**庫,就需要在

檔案的功能選項卡中勾選「**庫」,如圖

13-4

所示。圖

13-4

開啟訪問**庫的許可權

以此類推,如果需要訪問其他的庫位置,可勾選相應的選項以開啟訪問許可權。

在開啟相應的許可權之後,使用

api參考中介紹的

knownfolders

類的常用屬性就可以獲取到**庫、庫等位置。示例**如下所示://

獲取文件庫位置

storagefolder documentfolder = knownfolders.documentslibrary;

//獲取**庫位置

storagefolder musicfolder = knownfolders.

musiclibrary;

//獲取庫位置

storagefolder picturefolder = knownfolders.

pictureslibrary;

(2)建立檔案

在獲取了使用者庫位置之後,使用

createfileasync

方法及其過載可以在使用者庫中建立檔案,該方法需要獲得乙個引數來指定檔案的名稱,如果需要還可以使用另乙個

creationcollisionoption

型別的引數,指定如果已經存在同名檔案時應該執行的操作。

creationcollisionoption

是乙個列舉,包含四個列舉成員,如下所示: q

generateuniquename

,如果存在同名檔案,建立檔案時自動在檔名稱後面追加乙個數字。 q

replaceexisting

,如果存在同名檔案,建立檔案時將其替換。 q

failifexists

,如果存在同名檔案,則返回錯誤。 q

openifexists

,如果存在同名檔案,則將其開啟。

下面的示例**獲取文件庫,並在其中建立

test.txt

檔案,若存在同名檔案則將其替換。

storagefolder storagefolder = knownfolders.documentslibrary;

storagefile

file = await storagefolder.createfileasync("test

.txt ", creationcollisionoption.replaceexisting);

(3)檔案讀寫

在文件庫中建立了乙個

test.txt

檔案之後,若想對其進行寫入和讀取文字的操作,可以通過呼叫

fileio

類的writetextasync

和readtextasync

方法來實現,示例**如下所示:

//寫入文字

await windows.storage.fileio.writetextasync(

file, "

內容字串

");

//讀取文字

string text = await windows.storage.fileio.readtextasync(

file);

除了以文字方式讀寫檔案以外,還能以資料流的形式讀寫檔案。在以資料流的形式

寫入檔案內容時,首先需要通過

storagefile

類的openasync

方法得到用於寫入檔案內容的資料流,然後建立乙個

datawriter

類的物件,使用

datawriter

物件的writestring

方法將文字寫入到輸出流中,寫入完成後,呼叫

storeasync

和flushasync

方法儲存文字並關閉輸出流。示例**如下所示:

var stream = await file.openasync(windows.storage.fileaccessmode.readwrite);

using(var outputstream = stream.getoutputstreamat(0))

與寫入檔案相似

,在以資料流形式讀取檔案時,同樣需要首先通過呼叫

openasync

方法獲得讀取檔案的資料流,但與寫入不同的是,讀取檔案需要使用

datareader

類,通過此類的

loadasync

方法將檔案中的內容以資料流的形式讀取出來。示例**如下所示:

var stream = await file.openasync(windows.storage.fileaccessmode.readwrite);

uint size = (uint)stream.size;

using (var inputstream = stream.getinputstreamat(0))

除了以上兩種讀寫檔案的方式,還可通過位元組的方式讀寫檔案,採用這種方式,需要乙個緩衝區來儲存讀寫資料。這種方式並不常用,在這裡就不做過多介紹了,感興趣的讀者可以查閱相關資料。

Windows Store App 旋轉中心

旋轉中心的位置可以通過設定 centerofrotationx centerofrotationy 和centerofrotationz 屬性來指定。centerofrotationx 和centerofrotationy 屬性的預設值都是 0.5,表示旋轉軸正好位於旋轉物件的中心。當這兩個屬性值為...

Windows Store App 控制項動畫

在開發windows 應用商店應用時,開發工具中已經 封裝了大量的控制項供開發人員使用,而其中有一部分控制項,例如 flipview tooltip listview 以及semanticzoom 等控制項中已經預設整合了內建的動畫,這種整合在控制項中的動畫被稱為控制項動畫,開發人員可根據不同的應用...

Windows Store App 旋轉中心

旋轉中心的位置可以通過設定 centerofrotationx centerofrotationy 和centerofrotationz 屬性來指定。centerofrotationx 和centerofrotationy 屬性的預設值都是 0.5,表示旋轉軸正好位於旋轉物件的中心。當這兩個屬性值為...