FilePutObject 함수

업데이트: 2007년 11월

변수에서 디스크 파일로 데이터를 씁니다.

My 기능은 파일 I/O 작업에서 생산성 및 성능이 FilePutObject보다 우수합니다. 자세한 내용은 My.Computer.FileSystem 개체를 참조하십시오.

Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Object, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Double, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

매개 변수

  • FileNumber
    필수적 요소. 임의의 유효한 파일 번호입니다.

  • Value
    필수적 요소. 디스크에 쓴 데이터를 포함하고 있는 유효한 변수 이름입니다.

  • RecordNumber
    선택적 요소. 쓰기가 시작되는 레코드 번호(Random 모드 파일) 또는 바이트 번호(Binary 모드 파일)입니다.

  • ArrayIsDynamic
    선택적 요소. 배열을 쓰는 경우에만 적용됩니다. 배열을 동적으로 처리할 것인지의 여부와 길이를 설명하는 문자열에 대한 배열 설명자를 쓸 것인지의 여부를 지정합니다.

  • StringIsFixedLength
    선택적 요소. 문자열을 쓸 때만 적용합니다. 길이를 설명하는 문자열에 대한 설명자를 쓸 것인지의 여부를 지정합니다. 기본값은 False입니다.

설명

컴파일 타임에 Integer, Long, Short 등의 형식이 아닌 Object 형식이 전달되는 경우 모호성을 피할 수 있도록 FilePut 대신 FilePutObject 함수를 사용합니다.

FilePutObject는 개체를 설명하는 설명자를 읽고 씁니다. Variant 형식을 쓸 경우 FilePutObject가 필요합니다. 둘째 매개 변수에 대한 개체를 사용하고 있는지가 명확하지 않은 경우 FilePutObject와 FileGetObject를 사용하는 것이 좋습니다.

FilePutObject는 Random 모드와 Binary 모드에서만 사용할 수 있습니다.

FilePutObject를 사용하여 데이터를 쓴 경우 보통 FileGetObject를 사용하여 파일에서 읽습니다.

파일에서 첫째 레코드나 바이트는 위치 1에 있고 둘째 레코드와 바이트는 위치 2에 있으며 이와 같은 식으로 계속 이어집니다. RecordNumber를 생략하면 FilePutObject는 마지막 FileGetObject 또는 FilePutObject 함수(또는 마지막 Seek 함수에서 가리키는 레코드나 바이트) 다음에 그 다음 레코드나 바이트를 씁니다.

StringIsFixedLength 인수는 함수에서 문자열을 가변 길이로 해석할지 아니면 고정 길이로 해석할지를 제어합니다. FilePutObject는 인수가 True일 경우 길이 설명자를 쓰지 않습니다. FilePutObject에 StringIsFixedLength = True를 사용할 경우 FileGetObject에도 동일하게 하고 해당 문자열이 예상된 길이로 초기화되는지 확인해야 합니다.

Random 모드

Random 모드로 연 파일에는 다음 규칙이 적용됩니다.

  • 쓰고 있는 데이터의 길이가 FileOpen 함수의 RecordLength 절에 지정된 길이보다 짧으면 FilePutObject는 레코드 길이 경계에 다음 레코드를 씁니다. 한 레코드 끝 지점과 다음 레코드 시작 지점 사이에는 파일 버퍼의 기존 내용이 채워집니다. 채워지는 데이터의 양은 정확하게 확인할 수 없기 때문에 쓰고 있는 데이터 길이와 레코드 길이를 일치시키는 것이 좋습니다. 쓰고 있는 데이터의 길이가 FileOpen 함수의 RecordLength 절에 지정된 길이보다 길면 예외가 throw됩니다.

  • 쓰고 있는 변수에 숫자 형식이 포함되어 있으면 FilePutObject는 개체의 VarType을 식별하는 2바이트를 쓴 다음 해당 변수를 씁니다. 예를 들어, 정수가 포함되어 있는 개체를 쓸 때 FilePutObject는 6바이트를 씁니다. 그 중 2바이트는 개체를 VarType(3)(Integer)으로 식별하는 데 쓰고 4바이트는 데이터를 포함합니다. FileOpen 함수의 RecordLength 매개 변수로 지정한 레코드 길이는 해당 변수를 저장하는 데 필요한 실제 바이트 수보다 2바이트 이상 커야 합니다.

  • 쓰고 있는 변수가 문자열을 포함하고 있는 개체이면 FilePutObject는 개체의 VarType(8)을 식별하는 2바이트 설명자를 쓴 다음 문자열 데이터를 씁니다. 이 2바이트 설명자는 문자열 길이를 나타냅니다. FileOpen 함수의 RecordLength 매개 변수로 지정한 레코드 길이는 문자열의 실제 길이보다 4바이트 이상 더 커야 합니다. 설명자 없이 문자열을 지정하려면 StringIsFixedLength 매개 변수에 True를 전달해야 하며 읽을 문자열은 정확한 길이여야 합니다.

  • 쓰고 있는 변수가 배열이면 해당 배열의 크기와 차원에 대한 설명자를 작성할 수 있습니다. Visual Basic 6.0과 그 이전 버전에서는 동적 배열에 대한 파일 설명자를 쓰지만 고정 크기 배열에 대한 설명자는 쓰지 않습니다. Visual Basic에서는 기본적으로 설명자를 쓰지 않습니다. 설명자를 쓰려면 ArrayIsDynamic 매개 변수를 True로 설정합니다. 배열을 작성할 때 배열을 읽는 방법을 일치시켜야 합니다. 즉, 설명자로 읽는 경우 해당 설명자를 작성할 필요가 있습니다. 설명자는 배열 순위, 크기 및 각 순위에 대해 하한을 지정합니다. 길이는 2에 차원 수의 8배를 더한 값인 (2 + 8 * NumberOfDimensions)입니다. FileOpen 함수의 RecordLength 절로 지정한 레코드 길이는 배열 데이터와 배열 설명자를 쓰는 데 필요한 총 바이트 수보다 크거나 같아야 합니다.

Binary 모드

Binary 모드에서 연 파일의 경우 다음을 제외하고 Random 모드 규칙이 모두 적용됩니다.

  • FileOpen 함수의 RecordLength 절은 의미가 없습니다. FilePutObject는 레코드 사이를 채우지 않고 연속적으로 모든 변수를 디스크에 씁니다.

예제

다음 예제에서는 FilePutObject 함수를 사용하여 파일에 문자열을 씁니다.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

스마트 장치 개발자 참고 사항

이 함수는 지원되지 않습니다.

요구 사항

네임스페이스:Microsoft.VisualBasic

**모듈:**FileSystem

**어셈블리:**Visual Basic 런타임 라이브러리(Microsoft.VisualBasic.dll)

참고 항목

참조

FileGet 함수

FileOpen 함수

Seek 함수

FilePut 함수

My.Computer.FileSystem 개체

기타 리소스

Visual Basic에서 파일에 쓰기