Visual Basic에서는 전통적인 절차(FileOpen, Input, Put, Close)와 .NET API(System.IO.StreamReader, StreamWriter, FileStream)를 통해 파일 작업을 지원합니다. .NET 클래스를 사용하는 것이 선호됩니다.
세부 사항:
Using 구문을 사용하는 것이 좋습니다.StreamReader/StreamWriter를 사용하고, 바이트에는 FileStream을 사용합니다.코드 예시:
Dim filePath As String = "test.txt" ' 파일에 쓰기 Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") End Using ' 파일에서 읽기 Using reader As New StreamReader(filePath) Dim content As String = reader.ReadToEnd() End Using
StreamWriter를 사용하여 파일에 쓰고 이후에 스트림을 닫지 않으면 어떤 일이 발생하며,
Using구문을 사용하는 것이 중요한 이유는 무엇입니까?
답변:
스트림을 닫지 않으면(Close를 호출하지 않거나 Using을 사용하지 않으면) 버퍼링된 데이터가 메모리에 저장되며 디스크에 기록되지 않을 수 있습니다. 또한 닫히지 않은 스트림은 파일 설명자를 유지하므로 파일이 다른 프로세스에서 잠길 수 있고, 장기 실행 애플리케이션에서는 메모리 및 리소스 누수로 이어질 수 있습니다. Using 구문은 예외가 발생하더라도 Dispose가 호출되도록 보장합니다.
이야기
데이터의 갑작스러운 손실: 은행에서 보고서를 생성할 때 개발자가
StreamWriter를 닫지 않았습니다. 그 결과, 해제되지 않은 버퍼 때문에 일부 데이터가 파일에 기록되지 않았고, 고객 서비스 부서는 최종 보고서를 열 수 없었습니다.
이야기
파일 설명자 누수: ERP 시스템에서 개발자들은 파일을 수동으로 열고
Close를 호출하는 것을 종종 잊었습니다. 며칠 후, 애플리케이션은 열린 파일의 한계 초과로 실패했습니다.
이야기
파일 잠금 충돌: 네트워크 백업 서비스에서 파일이 올바른 접근 모드 없이 열려 다른 프로그램의 접근을 차단하여 전체 부서에 장시간 중단이 발생했습니다.