Zapisywanie pliku w aplikacji c# - Modern UI

0

Piszę ostatnio aplikację na Modern UI i próbuję zapisać dane do pliku tekstowego. Niestety przy drugiej edycji (przy pierwszej działa dobrze) aplikacja się crash'uje. Czy mógłby ktoś sprawdzić mój kod? Oczywiście jest on umieszczony w funkcji asynchronicznej.

      App.folder = Windows.Storage.ApplicationData.Current.LocalFolder;
                App.dataFile = await App.folder.GetFileAsync("NickData.txt");
                await Windows.Storage.FileIO.WriteTextAsync(App.dataFile, App.Nick); //Additional information: Access is denied. (Wyjątek od HRESULT: 0x80070005 (E_ACCESSDENIED))
                var stream = await App.dataFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
                using (var outputStream = stream.GetOutputStreamAt(0))
                {
                    DataWriter dataWriter = new DataWriter(outputStream);
                    dataWriter.WriteString(App.Nick);
                }

dodanie znacznika <code class="csharp"> - fp
poprawienie błędu ortograficznego - bogdans

0

co znaczy że się crashuje? jaki wyjątek dostajesz? może nie zamykasz pliku

0

Już rozwiązałem problem. Wystarczyło usunąć kilka linijek. Wkleję całą metodę, może ktoś skorzysta.

public async void SaveNick()
{
    StorageFolder dataFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    IReadOnlyList<IStorageItem> itemsList = await dataFolder.GetItemsAsync();

    foreach (var item in itemsList)
    {
        if (item is StorageFile && item.Name == "NickData.txt")
        {
            App.NickFileExist = true;
            break;
        }
    }
    if (App.NickFileExist)
    {
        StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder; ;
        StorageFile dataFile = await folder.GetFileAsync("NickData.txt");
        await Windows.Storage.FileIO.WriteTextAsync(dataFile, App.Nick);
    }
    else
    {
        StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder; ;
        StorageFile dataFile = await folder.CreateFileAsync("NickData.txt");
        await Windows.Storage.FileIO.WriteTextAsync(dataFile, App.Nick);
    }
}

sformatowanie kodu - fp

1
hit02 napisał(a):

Już rozwiązałem problem. Wystarczyło usunąć kilka linijek.

Jakbyś usunął wszystkie linijki, to miałbyś 100% pewności, że żaden błąd nigdy nie nastąpi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1