作者hoyunxian (WildDagger)
看板WindowsPhone
標題[開發] Win8/Win8.1/WP8.1存取檔案 (2)
時間Tue Jun 17 11:01:12 2014
基本上LocalFolder/RoamingFolder/TemporaryFolder操作方式是相同的,
(因為全部都是StorageFolder物件)
另外LocalSettings/RoamingSettings操作方式也是相同的
此外StorageFolder與StorageFile的操作方式也有八九成相同
不過(理所當然的)StorageFile不能列舉檔案與新建檔案,
所以我都會用StorageFolder當範例,其他的請舉一反三
(LocalSettings/RoamingSettings的操作方法後述)
以下提到的CreateCollisionOption列舉
是當你操作的時候碰到同名狀況時應該採用的方式:
ReplaceExisting(問答無用直接蓋掉)
OpenIfExists(有檔案就打開,沒檔案就新建)
GenerateUniqueName(有同名檔案存在的話就在後面加編號)
FailIfExists(拋出例外)
常用的是前三者,最後一個拋出例外則是當你想詢問使用者該怎麼處理的時候可以使用
(不過如果是用Picker物件的話程式會自動提示你)
StorageFolder的操作方式很簡單,多半是一個方法就結束:
CreateFileAsync(檔名(string格式), CreateCollisionOption列舉)
建立檔案(資料夾就是把CreateFileAsync改成CreateFolderAsync,
參數一模一樣,CreateCollisionOption列舉可省掉但碰到狀況會直接拋例外)
GetFileAsync(檔名(string格式))
取得檔案(資料夾一樣是把GetFileAsync換成GetFolderAsync,
參數一模一樣,不過沒抓到檔案的話會回傳null,還得自己判斷,
所以我比較推薦用CreateFile(Folder)Async搭配CreateCollisionOption列舉)
GetFilesAsync()
取得該目錄底下的檔案
(改成GetFoldersAsync是取得目錄,
改成GetItemsAsync是檔案與資料夾一起列舉)
GetParentAsync()
取得該目錄所在的資料夾
GetBasicPropertiesAsync()
回傳檔案屬性的物件,要判斷檔案大小的話必須從這個回傳物件來判斷。
RenameAsync(檔名(string格式), NameCollisionOption列舉)
改檔案名,跟CreateFileAsync的方式差不多一樣
不過NameCollisionOption列舉(理所當然)沒有OpenIfExists這個選項
DeleteAsync(StorageDeleteOption列舉)
刪除檔案,
StorageDeleteOption列舉是讓你決定要不要直接砍了不放資源回收桶
-----------------------------------------------------
剩下這個是StorageFile才有的:
MoveAsync(StorageFolder物件, 檔名(string格式), NameCollisionOption列舉)
把檔案移到你想要的資料夾,後兩者可省略
-----------------------------------------------------
大致上StorageFolder/StorageFile的常用API就這些
另外如果是用Picker的話因為本身就會傳回StorageFolder/StorageFile
(端看你呼叫哪個API方法)
所以就可以直接利用而不用先取得檔案了
另外關於LocalSettings與RoamingSettings
則是使用LocalSettings.Values["鍵值"]直接存取
不過要記得的是讀出來的是個物件,如果存的是字串請記得轉型
--
→ Xavy:在我房間11/18 23:41
推 sdfsonic: 有兇真11/18 23:43
推 justice00s: 在裸睡11/18 23:44
→ kiddingsa: 和軟軟的香蕉一起11/18 23:44
推 melzard: フゥーッハハハハ!11/18 23:45
→ tsunamimk2:簽名檔gate11/18 23:47
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.103.228
※ 文章網址: http://www.ptt.cc/bbs/WindowsPhone/M.1402974076.A.3D0.html
推 zxvc:請問LocalFolder在WP8.1是否有絕對路徑?能接PC,用檔案管理 06/17 13:49
→ zxvc:員(透過MTP)看到嗎? 06/17 13:49
推 zxvc:有點想寫信請MoliPlayer能支援存取Camera Roll以外且MTP能存 06/17 14:01
→ zxvc:取到的資料夾,不知WP8.1能不能辦到。 06/17 14:02
→ hungys:8.1可以,所以才這麼多檔案總管App 06/17 14:37
→ hungys:例如截圖的目錄在C:\Data\Users\Public\Pictures\Screensho 06/17 14:38
→ hungys:電腦端能看到的應該是C:\Data\Users\Public\這層之下的 06/17 14:38
推 zxvc:謝謝。 06/17 14:40