programowanieProgramista Backend (VB.NET)

Jak działa praca z strumieniami wejścia-wyjścia (I/O) w Visual Basic, jakie są sposoby odczytu i zapisu plików oraz jakie są niuanse zarządzania zasobami?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź.

W Visual Basic obsługuje się pliki zarówno za pomocą klasycznych procedur (FileOpen, Input, Put, Close), jak i za pomocą API .NET (System.IO.StreamReader, StreamWriter, FileStream). Zaleca się stosowanie klas .NET.

Niuanse:

  • Zaleca się używanie konstrukcji Using, aby automatycznie zwalniać zasoby.
  • Podczas pracy z dużymi plikami wygodniej jest korzystać z buforowania.
  • Do odczytu i zapisu napisów używaj StreamReader/StreamWriter, do bajtów — FileStream.
  • Obsługuj możliwe wyjątki podczas dostępu do plików (błędy dostępu, blokady).

Przykład kodu:

Dim filePath As String = "test.txt" ' Zapis do pliku Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") End Using ' Odczyt z pliku Using reader As New StreamReader(filePath) Dim content As String = reader.ReadToEnd() End Using

Pytanie z pułapką.

Co się stanie, jeśli nie zamkniesz strumienia po zapisie do pliku przez StreamWriter i dlaczego ważne jest użycie konstrukcji Using?

Odpowiedź: Jeśli nie zamkniesz strumienia (nie wywołasz Close lub nie użyjesz Using), zbuforowane dane mogą nie zostać zapisane na dysku, ponieważ system operacyjny przechowuje je w pamięci. Ponadto niezamknięty strumień zatrzymuje deskryptor pliku, co może zablokować dostęp do pliku dla innych procesów, a w długoterminowych aplikacjach prowadzi to do wycieków pamięci i zasobów. Konstrukcja Using gwarantuje wywołanie Dispose nawet w przypadku wystąpienia wyjątku.

Przykłady rzeczywistych błędów z powodu braku znajomości niuansów tematu.


Historia

Nagłe zniknięcie danych: Podczas generowania raportów w banku programista nie zamknął StreamWriter. W rezultacie część danych nie została zapisana w pliku z powodu niezwolnionego bufora, dział obsługi klienta nie mógł otworzyć końcowych raportów.


Historia

Wyciek deskryptorów plików: W systemie ERP programiści używali ręcznego otwierania plików i często zapominali wywoływać Close. Po kilku dniach aplikacja zawieszała się z powodu wyczerpania limitu otwartych plików.


Historia

Konflikt blokady plików: W sieciowej usłudze kopiowania zapasowego plik był otwierany bez odpowiedniego trybu dostępu, co blokowało dostęp innym programom i powodowało długie przestoje w całym dziale.