1

プロジェクトに保存されているファイルを開くと、本当に問題になります。いくつかのファイル (pdf、html など) を開く必要がありますが、同じ問題があります:値が期待される範囲内に収まりません

私はいくつかの方法を試しました:

a)

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;
    }
}

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;
    }
}

c)

StorageFile file2 = await StorageFile.GetFileFromApplicationUriAsync(
                                            new Uri("ms-appdata:///Assets/Data/pdf/lc_dossier_acceso_castellana.pdf", UriKind.Absolute));

このアクションは、ボタンを押すと開始されます。

何が起こったのかわかりません。

ファイルは Solution'NewProject'/NewProject/Assets/Data/*/ にあります

4

1 に答える 1

11

/ファイルへのパスにスラッシュを使用すると、そのエラーが発生することに気付きました。代わりに、バックスラッシュ\を使用すると、ファイルを取得できます。

次の方法を試してください:

StorageFile sFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\Data\htm\" + fileName + ".htm");

var fileStream = await sFile.OpenStreamForReadAsync();

がスケープ文字として@解釈されないように、パス文字列の前にを配置する必要があることに注意してください。\

次の方法でファイル ストリームを取得することもできます。

var fileStream = File.OpenRead("Assets/Data/htm/" + fileName + ".htm");
于 2013-07-18T14:45:14.017 に答える