2016-07-11 103 views
0

我正在爲我的應用程序使用本地存儲的Json文件。使用Visual Studio的模擬器讀取和寫入文件可以正常工作。當我連接設備並嘗試在該設備上運行時,我無法訪問我的Json文件。無法訪問Windows 8.1手機設備上的文件

我的json文件被設置爲內容和始終複製。

這是我的閱讀文件的try語句。我試過兩種主要的方法來訪問文件Current.InstalledLocationUri("ms-appx:///)。兩者都似乎在模擬器中工作,但都不能在設備上工作。

try 
{ 
    var package = Windows.ApplicationModel.Package.Current.InstalledLocation; 
    StorageFolder folder = await package.GetFolderAsync("Data"); 
    StorageFile file = await folder.GetFileAsync("Users.json"); 

    //Uri dataUri = new Uri("ms-appx:///Data/Users.json"); 
    //StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri); 

    string jsonText = await FileIO.ReadTextAsync(file); 
    JsonArray jsonArray = JsonArray.Parse(jsonText); 

    foreach (JsonValue userValue in jsonArray) 
    { 
     //Build my model object out of json 
    } 
} 
catch(Exception e) 
{ 
    //Creating instance for the MessageDialog Class 
    //and passing the message in it's Constructor 
    MessageDialog msgbox = new MessageDialog(e.Message); 
    //Calling the Show method of MessageDialog class 
    //which will show the MessageBox 
    await msgbox.ShowAsync(); 
} 

輸出窗口顯示:

Exception thrown: 'System.ArgumentException' in mscorlib.ni.dll 
Exception thrown: 'System.ArgumentException' in mscorlib.ni.dll 

編輯: 的嘗試捕捉迴路不捕相關文件系統訪問問題的異常。

在啓動步進時通過我在StorageFile file = await folder.GetFileAsync("Users.json");

失敗了,爲什麼我通過一個按鈕,我在string jsonText = await FileIO.ReadTextAsync(file);

設備故障我期待上運行我的應用程序觸發的功能是運行Windows Embedded 8.1手持更新2(其ToughPad Panazonic FZ-E1)。我是否需要定位Windows 8.1而不是Windows Phone 8.1?它一直在使用手機正常工作,直到控制POS條形碼掃描儀。

任何幫助,將不勝感激我很茫然。我的問題是否可能是由設備上的設置引起的?

+0

而不僅僅是信息,您可以分享全'的ToString()異常的'輸出,包括異常類型,消息和追蹤? – dbc

+0

經過檢查我的try catch塊甚至沒有捕捉異常。我所看到的例外情況不知從何而來。 mscorlib異常似乎沒有引起任何問題,除了踢我離開我的斷點一步。 – JaredStroeb

回答

0

檢查json文件的屬性。右鍵點擊文件 - >屬性。

檢查複製到輸出目錄並選擇菜單中的始終複製選項。 這應該有所幫助。

2

嘗試使用流讀取器就可以象下面這樣:

var myStream = await (await Package.Current.InstalledLocation.GetFolderAsync("Data")).OpenStreamForReadAsync("Users.json"); 
相關問題