odczyt każdego elementu z pliku

0

Witam,

Napisałem aplikację ale potrzebuje pomocy odnośnie wczytania każdego elementu z pliku. Oczywiście mam już zrobiony zapis, który wygląda w pliku następująco:

NNYNNNNN
YNYNNNNN
NYYNNNNN
NNNNNNNN
NNNNNNNN
NNNNNNNN
NNNNNNNN
NNNNNNNN

Kod który odpowiada za zapis w takiej postaci do pliku tekstowego:

        public void save()
        {
            SaveFileDialog s = new SaveFileDialog();
            s.Filter = "plik (*.txt)|*.txt";

            try
            {
                if(s.ShowDialog() == DialogResult.OK)
                {
                    FileStream f = new FileStream(s.FileName, FileMode.OpenOrCreate, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(f);

                    for (int i = 0; i < LiczbaKolumn; i++)
                    {
                        for (int j = 0; j < LiczbaWierszy; j++)
                        {
                            if(macierz[i][j] == "element")
                            {
                                sw.Write("Y");
                            }
                            else
                            {
                                sw.Write("N");
                            }
                        }
                        sw.WriteLine("\n");
                    }
                    sw.Close();
                    f.Close();

                    MessageBox.Show("zapisano stan");
                }
            }
            catch
            {
                MessageBox.Show("błąd!");
            }
        }

Próbowałem zrobić odczyt ale pobiera mi całą pierwszą linię z pliku, która później ta linia nie nadaje się do wpisania stanu "element" w macierzy, ponieważ potrzebny jest mi pojedynczy znak z każdej linii do każdej komórki.

Kod z odczytem:

        public void open()
        {
            OpenFileDialog o = new OpenFileDialog();
            o.Filter = "plik (*.txt)|*.txt";
            o.Multiselect = false;

            try
            {
                if(o.ShowDialog() == DialogResult.OK)
                {
                    FileStream f = new FileStream(o.FileName, FileMode.OpenOrCreate, FileAccess.Read);
                    StreamReader sr = new StreamReader(f);

                    string linia;      
                    while((linia = sr.ReadLine()) != null)
                    {
                        //pojedyńczy element
                    }

                    sr.Close();
                    file.Close();

                    MessageBox.Show("odczytano stan!");
                }
            }
            catch
            {
                MessageBox.Show("błąd!");
            }
        }
0

http://msdn.microsoft.com/pl-pl/library/ezftk57x(v=vs.110).aspx
Tak przy okazji - w metodzie zapisującej powinieneś chyba przyjąć to, co chcesz zapisać, i chyba wypadałoby, żeby zwróciła też jakiś status tej operacji zapisu? Oczywiście odpowiednio odnosi się to też do Twojego void open()

0

Zrobiłem coś takiego w odczycie z tego pliku i zawsze kiedy chcę wczytać zapisany plik, wyskakuje mi MessageBox "błąd". Nie wchodzi w try i nie wiem dlaczego tak się dzieje.

kod:

                    string linia;      
                    while((linia = sr.ReadLine()) != null)
                    {
                        char[] element = linia.ToCharArray();
                        for (int i = 0; i < LiczbaKolumn; i++)
                        {
                            int words = 0;
                            for (int j = 0; j < LiczbaWierszy; j++)
                            {
                                if(element[words] == 'Y')
                                {
                                    maczierz[i][j] = "element";
                                }
                                words++;
                            }
                        }
                    }
0
int i = 0;
while((linia = sr.ReadLine()) != null)
{
   for (int j = 0; j < linia.Length; j++)
   {
         macierz[i][j] = linia[j] == 'Y' ? "element" : "";
   }
   i++;
}

Nie wchodzi w try i nie wiem dlaczego tak się dzieje.

Gdybyś wyświetlił treść tego błędu to byś wiedział co się dzieje.

try
{
}
catch(Exception ex)
{
   MessageBox.Show(ex.Message);
}

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