[开发] Win8/Win8.1/WP8.1存取档案 (2)

楼主: hoyunxian (WildDagger)   2014-06-17 11:01:12
基本上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列举是让你决定要不要直接砍了不放资源回收桶
作者: zxvc (众生都是未来佛)   2014-06-17 13:49:00
请问LocalFolder在WP8.1是否有绝对路径?能接PC,用档案管理员(透过MTP)看到吗?有点想写信请MoliPlayer能支援存取Camera Roll以外且MTP能存取到的资料夹,不知WP8.1能不能办到。
作者: hungys (hungys)   2014-06-17 14:37:00
8.1可以,所以才这么多档案总管App例如截图的目录在C:\Data\Users\Public\Pictures\Screensho电脑端能看到的应该是C:\Data\Users\Public\这层之下的
作者: zxvc (众生都是未来佛)   2014-06-17 14:40:00
谢谢。

Links booklink

Contact Us: admin [ a t ] ucptt.com