我想在USB驱动器上选择一个XML文件,然后打开并阅读它。我认为我对Universap Apps中的概念有误解。
使用此代码时,出现错误“拒绝访问路径'E:\ folder \ file.xml'”。尝试加载时。
Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail
picker.FileTypeFilter.Add(".xml")
Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync
Await Task.Run(Function()
If Not (File Is Nothing) Then
Task.Yield()
Dim loadedData As XDocument = XDocument.Load(File.Path)
End If
End Function)
据我了解,当使用选择器选择文件时,将授予文件访问权限。也许是这样,因为我在Task.Run中访问了它?
当我将picker.PickSingleFileAsync放到函数中时,它不起作用,因为我不能使用await来调用它。删除等待后,我得到一个转换错误“无法将类型为'System .__ ComObject'的对象转换为类型为'Windows.Storage.StorageFile'。”
我的概念错误是什么,如何使用选择器选择文件(或者我必须使用选择器以外的其他工具?)然后打开并读取文件(xml)?如果重要,则应将代码放在按钮的click事件中。
您只能访问File对象。
您可以通过文件的路径访问文件。
这种方法应该起作用:
Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail
picker.FileTypeFilter.Add(".xml")
Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync
Dim Fl = Await File.OpenAsync(Windows.Storage.FileAccessMode.Read)
Dim inStream As Stream = Fl.AsStreamForRead()
Dim loadedData As XDocument = XDocument.Load(inStream)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句