Zapis w odwrotnej kolejności

0

Program ma odczytac dane tekstowe z jednego pliku i zapisac tekst w innym pliku w odwrotnej kolejnosci "asdf" -> "fdsa".
Czy takie rozwiazanie jest ok jesli mam sie ograniczyc do uzycia zwyklych tablic? Program odczytuje dwa razy to samo ale cwiczenie zaklada prace tylko na malych plikach wiec chyba jest ok? PS Koncze czytac ksiazke o c# czy to znaczy ze jak skoncze to bede mogl juz znalezc prace jako programista?
z gory dziekuje za odpowiedz czesc!

public static void Main(string[] args)
        {
            
            StreamReader sr = new StreamReader("proby.txt");
            StreamWriter sw = new StreamWriter("zapisy.txt");
            
            int dlugosc = 0;
            while((sr.Read()) != -1)//sprawdzanie dlugosci pliku
            {
                dlugosc++;
            }
            sr.Close();


            int[] znaki = new int[dlugosc];
            sr = new StreamReader("proby.txt");

            for(int i=dlugosc-1;i>=0;i--)//zapis znakow do tabeli o odpowiedniej dlugosci
            {
                znaki[i] = sr.Read();
            }

            for(int i=0;i<znaki.Length;i++)//zapis do pliku
            {
                sw.Write(Convert.ToChar(znaki[i]));
            }
            
            sr.Close();
            sw.Close();
            
        }
0

Ten kod jest kiepski z kilku względów:

  1. Odczytujesz bajt po bajcie z pliku, żeby dowiedzieć się, jaki ma rozmiar. Przecież wystarczy po prostu pobrać rozmiar z pliku.
  2. Dwa razy tworzysz tego samego streama.
  3. Tworzysz streamWriter w kiepskim miejscu. Co się stanie, jeśli jakiś fragment kodu pójdzie nie tak? Ani streamReader, ani streamWriter nie zostaną zwolnione.
  4. Po co używasz w ogóle stream reader i stream writer do prostych plików tekstowych. Zobacz, jakie metody posiada klasa File.

Widzisz, nawet w takim prostym kodzie można narobić mnóstwo... nie tyle byków, co dziwnych rzeczy.
I odczyt tego pliku, jak i zapis są też zrobione źle (patrz klasa File).

Ja bym nie zatrudnił nikogo, kto z programowania wie tylko tyle, co przeczytał w jakiejś jednej książce. Nie masz żadnego doświadczenia. Dla mnie ten kod Cię całkowicie dyskwalifikuje. Nawet na bezpłatne praktyki, bo bałbym się, że narobisz cyrków, które potem trzeba będzie odkręcać. Popisz sobie najpierw aplikacje dla siebie. Poproś o ocenę kodu itd. Przyłącz się do jakiegoś projektu. Zdobądź trochę doświadczenia, bo teraz to jest tak, jakbyś zjechał sobie na nartach z wysokości metra, a potem chciał od razu jeździć na dość stromym i dużym szczycie. Serio, szkoda Twoich i innych nerwów. Zacznij od pisania aplikacji dla siebie tak, jak mówiłem i przyłączania się do jakiś freeware'owych projektów.

0
Juhas napisał(a):

I odczyt tego pliku, jak i zapis są też zrobione źle (patrz klasa File).

A to niby dlaczego źle(pomijając fakt, że nie używa using, albo try-catch-finally)?

Jak będzie miał plik 10GB do przerobienia to też będziesz mówił, że za pomocą streamów jest źle i ma wszystko na raz wczytać do pamięci?

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