Osc*_*dez 1 c# readfile windows-phone-8
打开存储在项目中的文件时,我确实遇到了问题.我需要打开一些文件(pdf,html,...)并且遇到同样的问题:值不在预期范围内.
我尝试了几种方法:
一个)
private async Task<string> ReadFileContentsAsync(string fileName)
{
StorageFolder foldera = ApplicationData.Current.LocalFolder;
try
{
Stream filea = await foldera.OpenStreamForReadAsync("/Assets/Data/htm/" + fileName + ".htm");
...
}
catch (Exception e)
{
Debug.WriteLine("ERROR ReadFileContentsAsync " + e.Message);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
b)
private async Task<string> ReadFileContentsAsync(string fileName)
{
try
{
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appdata:///Assets/Data/htm/" + fileName + ".htm", UriKind.RelativeOrAbsolute));
...
}
catch (Exception e)
{
Debug.WriteLine("ERROR ReadFileContentsAsync " + e.Message);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
C)
StorageFile file2 = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appdata:///Assets/Data/pdf/lc_dossier_acceso_castellana.pdf", UriKind.Absolute));
Run Code Online (Sandbox Code Playgroud)
按下按钮时会启动此操作.
我不知道发生了什么.
这些文件位于Solution'NewProject'/ NewProject/Assets/Data/*/
我注意到,如果我/在文件的路径中使用shash,我会收到该错误.相反,如果我使用反斜杠,\我可以获取文件.
尝试以下方式:
StorageFile sFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\Data\htm\" + fileName + ".htm");
var fileStream = await sFile.OpenStreamForReadAsync();
Run Code Online (Sandbox Code Playgroud)
请注意,您必须@在路径字符串之前放置一个以避免\作为scape字符的解释.
您也可以这样获取文件流:
var fileStream = File.OpenRead("Assets/Data/htm/" + fileName + ".htm");
Run Code Online (Sandbox Code Playgroud)