• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Czy klase StreamWriter trzeba tj. zamykać?

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
100 wizyt
pytanie zadane 7 marca 2022 w C# przez Nabuchadonozor Gaduła (3,120 p.)
zamknięte 7 marca 2022 przez Nabuchadonozor

Cześć wszystkim, 

mam pytanko, dosyć proste dla większości z Was zapewne,

tyczy się one sytuacji, kiedy używamy klasy StreamWriter, czy trzebą ją zamykać jakoś w stylu takim jak jest to umieszczone w komentarzach w poniższym voidz'ie?

public void SaveData()
        {
            int i = 0;

            string path = @"..\..\..\Database\accounts.txt";
            string ndPath = @"..\..\..\Database\" + address + ".txt";

            string[] lines =
            {
                address,
                username,
                password,
                addInfo
            };

            if (!File.Exists(path)) //if not exists -> create accounts.txt
            {
                using (StreamWriter sw = File.CreateText(path)) ;
               
            }

            using (StreamWriter outputFile = new StreamWriter(path, true)) //write name of address to faster searching
            {
                outputFile.WriteLine(address);

                using (StreamWriter sw = File.CreateText(ndPath)) ; //create new file - his name is address of site

                foreach (string line in lines)
                {
                    using (StreamWriter outputFile2 = new StreamWriter(ndPath, true))
                    {
                        outputFile2.WriteLine(line);
                        //outputFile2.Close() A JESLI TU ZAMYKAM, TO I TAK NORMALNIE WSZYSTKO SIE ZAPISZE DO PLIKU, DOPIERO JAK DAM RETURNA W TYM MIEJSCU TO TYLKO PIEWRSZA LINIJKA SIE ZAPISZE...
                    }
                    //outputFile2.Close(); NIE DA SIE ZAMKNAC Z TEGO POZIOMU
                }
                //outputFile.Close(); POTRZEBNY?
            }
            
        }

Pytam, ponieważ w C++, w którym miałem szczęście kiedyś spędzać czas, biblioteke odnośnie wchodzenia do pliku trzeba było zamykać*. Wie ktoś może czy taka sytuacja powinna mieć miejsce?

komentarz zamknięcia: Odpowiedź użytkownika adrian17 w pełni satysfakcjonująca :)

1 odpowiedź

+2 głosów
odpowiedź 7 marca 2022 przez adrian17 Ekspert (330,960 p.)
wybrane 7 marca 2022 przez Nabuchadonozor
 
Najlepsza

Nie, nie trzeba; dokładnie po to jest ten blok `using`, żeby automatycznie się zamknął pod koniec bloku.

Pytam, ponieważ w C++, w którym miałem szczęście kiedyś spędzać czas, biblioteke odnośnie wchodzenia do pliku trzeba było zamykać

Nie, też nie trzeba było. Ba, w C++ie jest nawet łatwiej bo jest to praktycznie zawsze automatycznie robione przez destruktory, nawet nie trzeba o to "prosić" używając `using()` tak jak trzeba w C#. To jest jedna z najbardziej fundamentalnych cech C++a.

komentarz 7 marca 2022 przez Nabuchadonozor Gaduła (3,120 p.)
Dzięki wielkie za odpowiedź. Ale co do C++, to pamiętam, że były sytuacje, w których nie zamknięcie połączenia z jakimś plikiem skutkowało problemami w kolejnych połączeniach. Może to dlatego, że ja C++ praktykowałem jakieś 3-4 lata temu...
komentarz 7 marca 2022 przez adrian17 Ekspert (330,960 p.)

Jeśli używałeś fstreamów (a nie FILE* z C), to były zawsze automatycznie zamykane pod koniec scope'u.

Może to dlatego, że ja C++ praktykowałem jakieś 3-4 lata temu...

Tak jest od ~25 lat :)

komentarz 7 marca 2022 przez Nabuchadonozor Gaduła (3,120 p.)
Dobry boże, już nie pamiętam, ale no ważne, że wszystko teraz śmiga i nie mam na sumieniu niepewności co do aktualnych potrzeb. Dzięki wielkie jeszcze raz, miłego! :)

Podobne pytania

0 głosów
1 odpowiedź 128 wizyt
pytanie zadane 29 lipca 2019 w C# przez Ramzes Nowicjusz (140 p.)
0 głosów
1 odpowiedź 323 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

90,890 zapytań

139,565 odpowiedzi

313,872 komentarzy

60,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...