이 글은 도움말을 번역한 글입니다.
TextStream 개체
파일을 순차적으로 액세스할 수 있게 하는 개체입니다.
Syntax
TextStream. { property | method }
속성 및 메서드 인수는 TextStream 개체와 연결된 속성 및 메서드 중 하나일 수 있습니다. 실제 사용에서 TextStream은 FileSystemObject에서 반환된 TextStream 개체를 나타내는 변수 자리 표시자로 대체됩니다.
비고
아래 코드는 FileSystemObject의 CreateTextFile 메서드에서 반환한 TextStream 개체입니다.
Sub CreateAndWriteToFile()
Dim fs As Object
Dim a As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("D:\testfile.txt", True)
a.WriteLine "This is a test."
a.Close
End Sub
Sub Main()
Call CreateAndWriteToFile
End Sub
WriteLine과 Close 메서드는 TextStream 개체의 두 메서드입니다.
속성
AtEndOfLine property
파일 포인터가 TextStream 파일의 줄 끝 표식에 바로 접하여 있으면 True를 반환합니다. 그렇지 않으면 False를 반환하는 읽기 전용 속성입니다.
Syntax
object.AtEndOfLine
object는 항상 TextStream 개체의 이름입니다.
AtEndOfLine 속성은 읽기 전용으로 열린 TextStream 파일에만 적용되며, 그 밖의 경우에는 오류가 발생합니다.
아래 코드는 AtEndOfLine 속성의 사용법을 보여줍니다.
Sub ReadFileLinesAndDisplay()
Dim fs As Object
Dim a As Object
Dim retstring As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("D:\testfile.txt", ForReading, False)
Do While Not a.AtEndOfStream
retstring = ""
' 한 줄의 끝까지 문자를 읽어옴
Do While Not a.AtEndOfLine
retstring = retstring & a.Read(1)
Loop
' 결과를 메시지 박스로 표시
MsgBox "현재 줄 내용: " & retstring
a.SkipLine ' 다음 줄로 이동
Loop
a.Close
End Sub
AtEndOfStream property
파일 포인터가 TextStream 파일 끝에 있으면 True를, 그렇지 않으면 False를 반환하는 읽기 전용 속성입니다.
Syntax
object.AtEndOfStream
object는 항상 TextStream 개체의 이름입니다.
비고
AtEndOfStream 속성은 읽기 전용으로 열린 TextStream 파일에만 적용되며, 그 밖의 경우에는 오류가 발생합니다.
아래 코드는 AtEndOfStream 속성의 사용법을 보여줍니다.
Sub ReadFileLinesAndDisplay()
Dim fs As Object
Dim a As Object
Dim line As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("D:\testfile.txt", ForReading, False)
Do While Not a.AtEndOfStream
line = a.ReadLine ' 한 줄을 읽어옴
' 여기서 line을 활용하여 필요한 작업을 수행합니다.
' 예: 결과를 처리하는 다른 코드 추가
' 결과를 메시지 박스로 표시
MsgBox "현재 줄 내용: " & line
Loop
a.Close
End Sub
Column property
TextStream 파일에서 현재 문자 위치의 열 번호를 반환하는 읽기 전용 속성입니다.
Syntax
object.Column
object는 항상 TextStream 개체의 이름입니다.
비고
줄 바꿈 문자를 썼지만 다른 문자를 쓰기 이전이면 Column은 1이 됩니다.
아래 예제는 Column 속성의 사용법을 보여줍니다.
Sub ReadFileAndDisplayColumns()
Dim fso As Object
Dim myFile As Object
Dim filePath As String
Dim char As String
Dim currentColumn As Long
filePath = "D:\testfile.txt"
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set myFile = fso.OpenTextFile(filePath, 1, False, -2)
'Set myFile = fso.OpenTextFile(filePath, ForReading, False, TristateUseDefault)
' 파일 내용을 읽고 현재 열(column) 번호 출력
Do While Not myFile.AtEndOfStream
char = myFile.Read(1)
currentColumn = myFile.Column
Debug.Print "문자: " & char & vbTab & "열: " & currentColumn
Loop
' 파일 닫기
myFile.Close
' 개체 해제
Set myFile = Nothing
Set fso = Nothing
End Sub
Line property
TextStream 파일의 현재 줄 번호를 반환하는 읽기 전용 속성입니다.
Syntax
object.Line
object는 항상 TextStream 개체의 이름입니다.
비고
파일을 처음 연 다음 전혀 쓰지 않았으면 Line은 1이 됩니다.
아래 예제는 Line 속성 사용법을 보여줍니다.
Sub ReadFileLinesAndDisplayWithLine()
Dim fso As Object
Dim myFile As Object
Dim filePath As String
Dim textLine As String
Dim currentLine As Long
' 경로를 입력해 주세요.
filePath = "D:\testfile.txt"
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set myFile = fso.OpenTextFile(filePath, 1, False, -2)
''Set myFile = fso.OpenTextFile(filePath, ForReading, False, TristateUseDefault)
' 파일 내용을 한 라인씩 읽고 현재 행(line) 번호 출력
Do While Not myFile.AtEndOfStream
textLine = myFile.ReadLine
currentLine = myFile.line
Debug.Print "행: " & currentLine & vbTab & "내용: " & textLine
Loop
' 파일 닫기
myFile.Close
' 개체 해제
Set myFile = Nothing
Set fso = Nothing
End Sub
메서드
Close method
열려 있는 TextStream 파일을 닫습니다.
Syntax
object.Close
object는 항상 TextStream 개체의 이름입니다.
비고
아래 예제에서 Close 메서드는 열려 있는 TextStream 파일을 닫습니다.
Function ReadFileAndClose(filePath As String) As String
Dim fs As Object
Dim a As Object
Dim content As String
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set a = fs.OpenTextFile(filePath, 1, False, -2)
' 파일 내용 읽기
Do While Not a.AtEndOfStream
content = content & a.ReadLine & vbCrLf
Loop
' TextStream 닫기
a.Close
' 개체 해제
Set a = Nothing
Set fs = Nothing
ReadFileAndClose = content
End Function
Sub ExampleUsage()
Dim fileContent As String
fileContent = ReadFileAndClose("D:\testfile.txt")
MsgBox fileContent
End Sub
Read method
TextStream 파일에서 지정한 수의 문자를 읽은 다음 그 결과인 문자열을 반환합니다.
Syntax
object.Read (characters)
object : 필수적인 요소. 항상 TextStream 개체의 이름입니다.
characters : 필수적인 요소. 해당 파일에서 읽어 올 문자 개수입니다.
비고
아래 예제에서는 한 파일에서 백 개의 문자를 읽고 결과 문자열을 반환하는 Read 메서드 사용법을 보여줍니다.
Function ReadTextFile(filePath As String, numChars As Long) As String
Dim fs As Object
Dim a As Object
Dim content As String
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set a = fs.OpenTextFile(filePath, ForReading, False, -2)
' 파일 내용 읽기
content = a.Read(numChars)
' TextStream 닫기
a.Close
' 개체 해제
Set a = Nothing
Set fs = Nothing
ReadTextFile = content
End Function
Sub ExampleUsage()
Dim fileContent As String
fileContent = ReadTextFile("D:\testfile.txt", 100) ' 100글자 읽기
MsgBox fileContent
End Sub
ReadAll method
전체 TextStream 파일을 읽은 다음 결과인 문자열을 반환합니다.
Syntax
object.ReadAll
object는 항상 TextStream 개체의 이름입니다.
비고
큰 파일에 ReadAll 메서드를 사용하면 메모리 리소스를 낭비하게 되므로, 한 줄씩 파일을 읽어 오는 다른 기법을 사용하여 파일을 입력해야 합니다.
Function ReadEntireFile(filePath As String) As String
Dim fs As Object
Dim a As Object
Dim content As String
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set a = fs.OpenTextFile(filePath, 1, False, -2)
' 파일 내용 읽기
content = a.ReadAll
' TextStream 닫기
a.Close
' 개체 해제
Set a = Nothing
Set fs = Nothing
ReadEntireFile = content
End Function
Sub ExampleUsage()
Dim fileContent As String
fileContent = ReadEntireFile("D:\testfile.txt")
MsgBox fileContent
End Sub
ReadLine method
TextStream 파일에서 줄 바꿈 문자를 제외한 한 줄 전체를 읽은 다음 결과 문자열을 반환합니다.
Syntax
object.ReadLine
object 인수는 항상 TextStream 개체의 이름입니다.
비고
아래 예제에서는 TextStream 파일에서 한 줄을 읽고 문자열을 반환하는 ReadLine 메서드 사용법을 보여줍니다.
Function ReadFileLine(filePath As String, lineNumber As Long) As String
Dim fs As Object
Dim a As Object
Dim currentLine As Long
Dim lineContent As String
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (1: 읽기 모드, -2: 시스템 기본 인코딩)
Set a = fs.OpenTextFile(filePath, 1, False, -2)
' 파일 내용 읽기
currentLine = 1
Do While Not a.AtEndOfStream
If currentLine = lineNumber Then
lineContent = a.ReadLine
Exit Do
Else
End If
currentLine = currentLine + 1
a.SkipLine ' 다음 줄로 이동
Loop
' TextStream 닫기
a.Close
' 개체 해제
Set a = Nothing
Set fs = Nothing
ReadFileLine = lineContent
End Function
Sub ExampleUsage()
Dim lineContent As String
lineContent = ReadFileLine("D:\testfile.txt", 3) ' 3번째 줄 읽기
MsgBox lineContent
End Sub
Skip method
TextStream 파일을 읽을 때 지정한 문자 수만큼 건너 뜁니다.
Syntax
object.Skip (characters)
object : 필수적인 요소. 항상 TextStream 개체의 이름입니다.
characters : 파일을 읽을 때 건너 뛸 문자의 개수입니다.
비고
건너 뛴 문자는 폐기됩니다.
아래 예제에서 Skip 메서드는 텍스트 파일을 읽기 전에 처음 10 개의 문자를 건너 뜁니다.
Sub Main()
Dim filePath As String
Dim skipChars As Long
filePath = "D:\testfile.txt" ' 파일 경로
skipChars = 10 ' 건너뛸 문자 수
Call SkipCharacters(filePath, skipChars)
End Sub
Function SkipCharacters(filePath As String, skipChars As Long)
Dim fso As New FileSystemObject
Dim txtStream As TextStream
Dim readChars As String
If fso.FileExists(filePath) Then
Set txtStream = fso.OpenTextFile(filePath, 1, False, -2)
txtStream.Skip skipChars
readChars = txtStream.ReadAll
MsgBox "건너뛴 후 읽은 내용: " & Chr(10) & readChars
txtStream.Close
Else
MsgBox "파일을 찾을 수 없습니다. 경로를 확인해주세요."
End If
Set txtStream = Nothing
Set fso = Nothing
End Function
SkipLine method
TextStream 파일을 읽을 때 다음 줄로 건너 뜁니다.
Syntax
object.SkipLine
object는 항상 TextStream 개체의 이름입니다.
비고
한 줄을 건너 뛴다는 말은 다음에 나오는 줄 바꿈 문자를 포함하여 그 줄의 모든 문자를 읽어 들인 다음 버린다는 뜻입니다. 파일을 읽을 수 없으면 오류가 일어납니다.
아래 예제는 SkipLine 메서드 사용법을 보여줍니다.
Sub Main()
Dim filePath As String
Dim skipLines As Long
filePath = "D:\testfile.txt" ' 여기에 원하는 파일 경로를 입력하세요.
skipLines = 3 ' 건너뛸 줄 수를 입력하세요.
Call SkipNumberOfLines(filePath, skipLines)
End Sub
Function SkipNumberOfLines(filePath As String, skipLines As Long)
Dim fso As New FileSystemObject
Dim txtStream As TextStream
Dim currentLine As String
Dim readLines As String
If fso.FileExists(filePath) Then
Set txtStream = fso.OpenTextFile(filePath, 1, False, -2)
'skipLines 만큼 줄을 건너뛰기
Dim i As Long
For i = 1 To skipLines
If Not txtStream.AtEndOfStream Then
txtStream.SkipLine
Else
Exit For
End If
Next i
' 건너뛴 후 남은 내용 읽기
Do Until txtStream.AtEndOfStream
currentLine = txtStream.ReadLine
readLines = readLines & currentLine & Chr(10)
Loop
MsgBox "건너뛴 후 읽은 내용: " & Chr(10) & readLines
txtStream.Close
Else
MsgBox "파일을 찾을 수 없습니다. 경로를 확인해주세요."
End If
Set txtStream = Nothing
Set fso = Nothing
End Function
Write method
TextStream 파일에 지정한 문자열을 작성합니다.
Syntax
object.Write (string)
object : 필수적인 요소. 항상 TextStream 개체의 이름입니다.
string : 필수적인 요소. 파일에 작성할 텍스트입니다.
각 문자열 사이의 공백이나 문자없이 지정한 문자열을 작성합니다. WriteLine 메서드를 사용하여 줄 바꿈 문자나 줄 바꿈 문자로 끝나는 문자열을 작성합니다.
아래 예제는 Write 메서드 사용법을 보여줍니다.
Sub WriteToFile(filePath As String, content As String)
Dim fs As Object
Dim a As Object
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 (2: 쓰기 모드, -2: 시스템 기본 인코딩)
Set a = fs.OpenTextFile(filePath, ForWriting, True, -2)
' 내용 쓰기
a.Write content
' TextStream 닫기
a.Close
' 개체 해제
Set a = Nothing
Set fs = Nothing
End Sub
Sub ExampleUsage()
WriteToFile "D:\output.txt", "Hello, world!" ' 파일에 내용 쓰기
End Sub
WriteBlankLines method
지정한 수만큼 TextStream 파일에 줄 바꿈 문자를 작성합니다.
Syntax
object.WriteBlankLines (lines)
object : 필수적인 요소. 항상 TextStream 개체의 이름입니다.
lines : 필수적인 요소. 파일에 쓸 줄 바꿈 문자의 수입니다.
비고
아래 예제는 WriteBlankLines 메서드 사용법을 보여줍니다.
Sub Main()
Dim filePath As String
Dim blankLines As Long
filePath = "D:\example.txt" ' 파일 경로
blankLines = 5 ' 쓰고 싶은 공백 라인 수
WriteBlankLinesToFile filePath, blankLines
End Sub
Sub WriteBlankLinesToFile(filePath As String, blankLines As Long)
Dim fs As FileSystemObject
Dim ts As TextStream
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 또는 생성 (8: 추가 모드)
Set ts = fs.OpenTextFile(filePath, ForAppending, True)
' 지정된 공백 라인 개수 작성
ts.WriteBlankLines blankLines
' TextStream 닫기
ts.Close
' 개체 해제
Set ts = Nothing
Set fs = Nothing
End Sub
WriteLine
지정한 문자열과 줄 바꿈 문자를 TextStream 파일에 작성합니다.
Syntax
object.WriteLine ([ string ])
object : 필수적인 요소. 항상 TextStream 개체의 이름입니다.
string : 선택적인 요소. 파일에 쓸 텍스트입니다. 생략하면 줄 바꿈 문자를 파일에 작성합니다.
비고
아래 예제는 WriteLine 메서드 사용법을 보여줍니다.
Sub Main()
Dim filePath As String
Dim content As String
filePath = "D:\example.txt" ' 파일 경로
content = "Hello, world!" ' 작성하려는 텍스트
WriteLineToFile filePath, content
End Sub
Sub WriteLineToFile(filePath As String, content As String)
Dim fs As FileSystemObject
Dim ts As TextStream
' FileSystemObject 생성
Set fs = CreateObject("Scripting.FileSystemObject")
' 파일 열기 또는 생성 (2: 쓰기 모드)
Set ts = fs.OpenTextFile(filePath, ForWriting, True)
' 텍스트 작성 (새 줄에)
ts.WriteLine content
' TextStream 닫기
ts.Close
' 개체 해제
Set ts = Nothing
Set fs = Nothing
End Sub
'Microsoft Scripting Runtime' 카테고리의 다른 글
File 개체 (0) | 2023.08.13 |
---|---|
Files 컬렉션 (0) | 2023.08.13 |
Folder 개체 (0) | 2023.08.10 |
Folders 컬렉션 (0) | 2023.08.10 |
Drive 개체 (0) | 2023.08.10 |