Soru & Cevap

IsolateStorege ile dosya kaydetme

23.01.2014 - 11:27

Merhabalar. Yaklaşık 15 gündür sadece dosya okuyup yazmaya uğraşıyorum. Bakmadığım forum ya da api kalmadı ancak başarabilmişdeğilim. Daha önceki sorumdaki programda birkaç değişiklik yaptım.

IsolatedStorageFile user = IsolatedStorageFile.GetUserStoreForApplication();

        IsolatedStorageFile group = IsolatedStorageFile.GetUserStoreForApplication();

        string sFileuser = "user.txt";

        string sFilegroup = "group.txt";

private void listeyaz()
        {

            IsolatedStorageFileStream dataFileuser = user.CreateFile(sFileuser);
            dataFileuser.Close();

            IsolatedStorageFileStream dataFilegroup = group.CreateFile(sFilegroup);
            dataFilegroup.Close();

            StreamWriter swuser = new StreamWriter(new IsolatedStorageFileStream(sFileuser, FileMode.Open, user));
            for (int i = 0; i < listeuser.Count; i++)
            {
                swuser.WriteLine(listeuser[i]);
            }
            swuser.Close();

            StreamWriter swgroup = new StreamWriter(new IsolatedStorageFileStream(sFilegroup, FileMode.Open, group));
            for (int i = 0; i < listeuser.Count; i++)
            {
                swgroup.WriteLine(listegroup[i]);
            }
            swgroup.Close();

            Application.Current.Terminate();
        }

private void oku()
        {           

            if (File.Exists(sFileuser))

            {
                MessageBox.Show("sFilegroup exists");

                if (File.Exists(sFilegroup))
                {
                    MessageBox.Show("sFilegroup exists");
                    StreamReader readeruser = new StreamReader(new IsolatedStorageFileStream(sFileuser, FileMode.Open, user));

                    while (readeruser.Peek() > -1)
                    {
                        listeuser.Add(readeruser.ReadLine());
                    }
                    readeruser.Close();

                    StreamReader readergroup = new StreamReader(new IsolatedStorageFileStream(sFilegroup, FileMode.Open, group));

                    while (readergroup.Peek() > -1)
                    {
                        listegroup.Add(readergroup.ReadLine());
                    }
                    readergroup.Close();
                    File.Delete(sFileuser);
                    File.Delete(sFilegroup);
                }
                else
                {
                    MessageBox.Show("sFilegroup does not exists");
                }
                       
            }
            else
            {
                MessageBox.Show("sFileuser does not exists");
            }

            for (int i = 0; i < listeuser.Count; i++)
            {
                listitem lst = new listitem();
                lst.user.Text = listeuser[i];
                lst.description.Text = listegroup[i];
                LstSample.Items.Add(lst);
            }

}

Dosyalar kapanmadan önce yazılıyor ancak program tekrar açıldığında okuma fonksiyonu dosyaları görmüyor yani program kapanınca dosyalar siliniyor. O halde windows phone da "storage" diye bir kavram yok mu?

 

10 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user omer.birler
omer.birler
24.01.2014 - 08:27

Sorun çözüldü. File.Exists(sFileuser) dosya varlığını kontrol edince dosyayı olsa bile görmüyor windows phone. Onun yerine user.FileExists(sFileuser) ile kontrol etmek gerekiyormuş. Ayrıca sadece bu gbilgi de sorunu çözmedi. Yine windows phone şu şekilde okuma yapınca saçmalıyor. Girilen girdileri okuyunca ya eksik alıyor ya da sırasını değiştiriyor.

while (readeruser.Peek() > -1)
                    {
                        listeuser.Add(readeruser.ReadLine());
                    }

Bunu çözmek için şöyle bir yol buldum:

 string rawDatauser = readeruser.ReadToEnd();
                    readeruser.Close();

                    string[] sepuser = new string[] { "\r\n" };
                    string[] arrDatauser = rawDatauser.Split(sepuser, StringSplitOptions.RemoveEmptyEntries);

                    
                    foreach (var d in arrDatauser)
                    {
                        listeuser.Add(d);
                    }

Okunacak metni satır satır yerine bütün olarak alıp sonradan parçalara bölüyorum. Belki bu işi uzatıyor ancak şu an için düzgün çalışan tek algoritma bu