• 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ć?

Object Storage Arubacloud
0 głosów
128 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 (344,800 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 (344,800 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ź 168 wizyt
pytanie zadane 29 lipca 2019 w C# przez Ramzes Nowicjusz (140 p.)
0 głosów
1 odpowiedź 367 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

92,525 zapytań

141,357 odpowiedzi

319,387 komentarzy

61,914 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...