2

これはこのサイトでの最初の投稿であり、コードを機能させるために広範囲を検索しました。タイトルが示すように、これは WinRT アプリであり、ファイル IO に問題があります。私がやりたいことは、アプリケーションのインストール ディレクトリ内にあり、List<> にフィードするデータ行を含むフォルダーに保存されているテキスト ファイルを読み取ることです。

public static async void GetStations()
    {
        try
        {
            using (var stream = await Windows.Storage.ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(@"MyApp\Data\file.txt"))
            {
                using (var streamReader = new StreamReader(stream))
                {
                    while (streamReader.Peek() >= 0)
                    {
                        string line = await streamReader.ReadLineAsync();
                        //do something with 
                    }
                }

            }
        }
        catch (Exception e)
        {
            ...
        }
        finally
        {
            ...
        }
    }

問題は、実行しようとするとファイルが見つからないというエラーが発生することです。誰でも助けることができますか?より多くの情報を投稿する必要がある場合は、できます... よろしくお願いします。

4

2 に答える 2

3

ファイルをアプリケーション パッケージの一部として配布する場合Package.Current.InstalledLocationは、ここが適切な場所です。ApplicationData.Current.LocalFolderアプリケーションによってそこに配置されたファイルのみが含まれます。

正しいコードは次のようになります。

public static async void GetStations()
{
    try
    {
        using (var stream = await Windows.ApplicationModel.Package.Current.InstalledLocation.OpenStreamForReadAsync(@"Data\file.txt"))
        {
            using (var streamReader = new StreamReader(stream))
            {
                while (streamReader.Peek() >= 0)
                {
                    string line = await streamReader.ReadLineAsync();
                    //do something with 
                }
            }

        }
    }
    catch (Exception e)
    {
        //...
    }
    finally
    {
        //...
    }
}

Dataファイルはフォルダー内のプロジェクトに含まれている必要があり、にBuild Action設定されていContentます。

于 2013-01-21T17:29:53.797 に答える
0

から開く代わりにApplicationData、おそらく次のものが必要です。

Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync

これにより、アプリケーションのデータフォルダーではなく、パッケージのインストール フォルダーにファイルが取得されます。

于 2013-01-21T17:11:41.693 に答える