Zapisywanie do pliku

0

Witam serdecznie. Pisze aplikacje Metro. Mam mały problem. Aplikacja przelicza wartości z textboxów po czym zapisuję informacje do pliku. Problem wygląda następująco.
Chciałbym żeby przed otwarciem pliku aplikacja sprawdziła czy te pliki istnieją.

 public async Task Odczytywanie()
        {
                                          
            StorageFolder local = ApplicationData.Current.LocalFolder;


            if (local != null)
            {
                var _File18 = await local.OpenStreamForReadAsync("IG.txt");
                using (StreamReader streamReader1 = new StreamReader(_File18))
                {                   
                        hOdczyt = streamReader1.ReadToEnd();
                        h = float.Parse(hOdczyt);
                    
                    var _File19 = await local.OpenStreamForReadAsync("IGN.txt");

                    using (StreamReader streamReader2 = new StreamReader(_File19))
                    {
                        hnOdczyt = streamReader2.ReadToEnd();
                        hn = float.Parse(hnOdczyt);

                        var _File20 = await local.OpenStreamForReadAsync("IN.txt");

                        using (StreamReader streamReader3 = new StreamReader(_File20))
                        {
                            ngodzOdczyt = streamReader3.ReadToEnd();
                            ngodz = float.Parse(ngodzOdczyt);
                        }
                        var _File21 = await local.OpenStreamForReadAsync("SG.txt");

                        using (StreamReader streamReader4 = new StreamReader(_File21))
                        {
                            shOdczyt = streamReader4.ReadToEnd();
                            sh = float.Parse(shOdczyt);
                        }
                        var _File22 = await local.OpenStreamForReadAsync("DS.txt");

                        using (StreamReader streamReader5 = new StreamReader(_File22))
                        {
                            dwOdczyt = streamReader5.ReadToEnd();
                            dw = float.Parse(dwOdczyt);
                        }
                        var _File23 = await local.OpenStreamForReadAsync("PU.txt");

                        using (StreamReader streamReader6 = new StreamReader(_File23))
                        {
                            puOdczyt = streamReader6.ReadToEnd();
                            pu = float.Parse(puOdczyt);
                        }
                        var _File24 = await local.OpenStreamForReadAsync("KN.txt");

                        using (StreamReader streamReader7 = new StreamReader(_File24))
                        {
                            {
                                knOdczyt = streamReader7.ReadToEnd();
                                kn = float.Parse(knOdczyt);
                            }
                            var _File25 = await local.OpenStreamForReadAsync("KB.txt");

                            using (StreamReader streamReader8 = new StreamReader(_File25))
                            {
                                kbOdczyt = streamReader8.ReadToEnd();
                                kb = float.Parse(kbOdczyt);                                                
                  }
                }
              }
            }
          } 

Próbowałem wcześniej podobnej metody z CreationColisionOption ale niestety aplikacja po czasie się zesypała a ta metoda działa prawie tak jak bym chciał ;)
Proszę o pomoc :)

0

Do sprawdzania czy dany plik istnieje służy metoda File.Exists:
https://msdn.microsoft.com/pl-pl/library/system.io.file.exists(v=vs.110).aspx

1

Przechwyć FileNotFoundException i będzie jasne, że plik, który próbujesz otwierać nie istnieje.
Albo użyj TryGetItemAsync(): https://msdn.microsoft.com/library/windows/apps/windows.storage.storagefolder.trygetitemasync.aspx

Wymaga Windows 8.1, nie jest dostępne w 8.0.

Tak w ogóle to polecam przejrzenie: https://www.suchan.cz/2014/07/file-io-best-practices-in-windows-and-phone-apps-part-1-available-apis-and-file-exists-checking/ bo zamęt jest niesamowity z taką prostą rzeczą.

@złoty: Nie w WinRT lub UWP. Chyba, że na telefonie, bo wtedy tak, ale tylko dla Silverlight, nie dla WinPRT ;-)

0

Dziękuję wszystkim za pomoc. To mi pomogło: :)

 
try
                {

                    StorageFile file = local.GetFileAsync(_Name1).AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
                    fileExists1 = file != null;
                }
                catch (Exception e)
                {
                    fileExists1 = false;
                }

                if (fileExists1 == false)
                {
                Load = false;               
                }
                else
                {
                Load = true;
                }

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