다음을 통해 공유


FileSystem.FilePutObject(Int32, Object, Int64) 메서드

정의

변수의 데이터를 디스크 파일에 씁니다. My 기능은 파일 I/O 작업에서 FilePutObject보다 더 나은 생산성 및 성능을 제공합니다. 자세한 내용은 FileSystem를 참조하세요.

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

매개 변수

FileNumber
Int32

필수 요소. 유효한 파일 번호입니다.

Value
Object

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

RecordNumber
Int64

선택 사항입니다. 쓰기를 시작할 레코드 번호(Random 모드 파일) 또는 바이트 숫자(Binary 모드 파일)입니다.

예제

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

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

설명

함수는 FilePutObject , , Short등과 같은 LongInteger다른 형식 대신 형식 Object 이 전달되는 경우 컴파일 시 모호성을 방지하기 위해 대신 FilePut 사용됩니다.

FilePutObject 는 개체를 설명하는 설명자를 작성하고 읽습니다. 형식 FilePutObject 을 작성 Variant 하려는 경우 가 필요합니다. 확실하지 않은 경우 두 번째 매개 변수에 개체를 사용하는 경우 항상 및 FileGetObject를 사용하는 FilePutObject 것이 좋습니다.

FilePutObject는 및 Binary 모드에서 Random 만 유효합니다.

FilePutObject로 작성된 데이터는 일반적으로 FileGetObject을 사용하여 파일에서 읽습니다.

파일의 첫 번째 레코드 또는 바이트는 1위, 두 번째 레코드 또는 바이트는 위치 2 등에 있습니다. 를 생략 RecordNumberFilePutObject 하면 마지막 또는 함수(또는 마지막 FileGetObjectFilePutObject 함수가 가리키는 Seek 레코드 또는 바이트) 다음에 다음 레코드 또는 바이트를 씁니다.

인수는 StringIsFixedLength 함수가 문자열을 변수 또는 고정 길이로 해석하는지 여부를 제어합니다. FilePutObject 는 인수 True가 인 경우 길이 설명자를 작성하지 않습니다. 에서 FilePutObject를 사용하는 StringIsFixedLength = True 경우 와 FileGetObject동일한 작업을 수행해야 하며 문자열이 예상되는 길이로 초기화되었는지도 확인해야 합니다.

임의 모드

모드로 Random 열린 파일의 경우 다음 규칙이 적용됩니다.

  • 기록되는 데이터의 길이가 함수 FilePutObjectFileOpenRecordLength 지정된 길이보다 작으면 레코드 길이 경계에 후속 레코드를 씁니다. 한 레코드의 끝과 다음 레코드의 시작 사이의 공간은 파일 버퍼의 기존 내용으로 채워집니다. 패딩 데이터의 양을 정확하게 확인할 수 없으므로 일반적으로 레코드 길이가 기록되는 데이터의 길이와 일치하도록 하는 것이 좋습니다. 기록되는 데이터의 길이가 함수 절 FileOpenRecordLength 지정된 길이보다 크면 예외가 throw됩니다.

  • 작성 중인 변수가 숫자 형식 FilePutObject 을 포함하는 개체인 경우 개체의 를 식별하는 VarType 2바이트를 쓴 다음 변수를 씁니다. 예를 들어 정수가 포함된 개체를 작성할 때 6바이트를 씁니다. 즉, FilePutObject 개체를 (Integer)로 VarType(3) 식별하는 바이트 2바이트와 데이터를 포함하는 4바이트를 씁니다. 함수의 RecordLength 매개 변수에 FileOpen 지정된 레코드 길이는 변수를 저장하는 데 필요한 실제 바이트 수보다 2바이트 이상 커야 합니다.

  • 작성 중인 변수가 문자열 FilePutObject 을 포함하는 개체인 경우 개체의 를 식별하는 VarType(8) 2 바이트 설명자, 문자열의 길이를 나타내는 2 바이트 설명자를 쓴 다음 문자열 데이터를 씁니다. 함수의 RecordLength 매개 변수 FileOpen 에 지정된 레코드 길이는 문자열의 실제 길이보다 4바이트 이상 커야 합니다. 설명자 없이 문자열을 배치하려면 매개 변수에 StringIsFixedLength 전달 True 해야 하며 읽은 문자열은 올바른 길이여야 합니다.

  • 작성 중인 변수가 배열인 경우 함수의 절에 FileOpen 지정된 RecordLength 레코드 길이는 배열 데이터 및 배열 설명자를 작성하는 데 필요한 모든 바이트의 합계보다 크거나 같아야 합니다. 설명자는 배열의 순위, 크기 및 각 순위에 대한 하한을 지정합니다. 길이는 차원 수의 2배에 8배 더합니다(2 + 8 * NumberOfDimensions).

이진 모드

모드로 Binary 열린 파일의 경우 다음을 Random 제외한 모든 모드 규칙이 적용됩니다.

  • RecordLength 함수의 FileOpen 절은 영향을 주지 않습니다. FilePutObject 는 레코드 간에 패딩하지 않고 모든 변수를 연속적으로 디스크에 씁니다.

적용 대상

추가 정보