[英]Read and Display PDF file from Isolated Storage in a windows phone 8 app
[英]how to correctly read from isolated file in windows phone development
我有兩種寫入和讀取文件的方法。
public static async Task WriteDataToFileAsync(string fileName, string content)
{
byte[] data = Encoding.Unicode.GetBytes(content);
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
using (var s = await file.OpenStreamForWriteAsync())
{
await s.WriteAsync(data, 0, data.Length);
}
}
public async static Task<string> ReadFileContentsAsync()
{
var folder = ApplicationData.Current.LocalFolder;
try
{
var file = await folder.OpenStreamForReadAsync("MenuData.json");
using (var streamReader = new StreamReader(file))
{
Debug.WriteLine(streamReader.ReadToEnd());
return streamReader.ReadToEnd();
}
}
catch (Exception)
{
return string.Empty;
}
}
然后在這兩種方法中使用
public static async void ApiToFileRestaurants()
{
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync("http://bonar.si/api/restaurants").Result;
response.EnsureSuccessStatusCode();
string responseBody = response.Content.ReadAsStringAsync().Result;
await Restaurant.WriteDataToFileAsync("MenuData.json", responseBody);
}
public async static Task<List<Restaurant>> FileToRestaurantList()
{
var responseBody = await Restaurant.ReadFileContentsAsync();
List<Restaurant> parsedRestaurants = (List<Restaurant>)Newtonsoft.Json.JsonConvert.DeserializeObject(responseBody, typeof(List<Restaurant>));
return parsedRestaurants;
}
現在我的問題是ReadFileAsync
不返回我知道保存在MenuData.json
文件中的結果,而是返回空字符串。
我主要是從msdn文檔獲取源代碼的。
文件在我的wp電動工具中的位置看起來像這樣 。 我是新手程序員,所以我可能會忽略其他東西
您是否可以嘗試使用ReadToEndAsync從文件異步讀取數據,該方法基本上解析完整的數據並將響應作為一個字符串發送。
var file = await folder.OpenStreamForReadAsync("MenuData.json");
using (var streamReader = new StreamReader(file))
{
return await streamReader.ReadToEndAsync();
}
希望這可以幫助!
我從另一個論壇得到了解決方案
您兩次調用streamReader.ReadToEnd()。 第一次將其記錄到Debug流中,第二次是實際使用的結果。 每次調用時,該方法都會將文件指針移到末尾,第二次沒有任何讀取。
所以刪除該調試行幾乎解決了我的問題。 我確實得到了想要的字符串,但是其中有一個錯誤,因此Newtonsoft.Json很難解析它。 所以我嘗試了@asitis解決方案並將.json更改為.text,它可以正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.