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

정의

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

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

매개 변수

FileNumber
Int32

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

Value
Object

필수 요소. 데이터를 읽어오는 올바른 변수 이름입니다.

RecordNumber
Int64

선택 사항입니다. 읽기가 시작되는 레코드 번호(Random 모드 파일) 또는 바이트 번호(Binary 모드 파일)입니다.

예제

다음 예제에서는 레코드를 테스트 파일로 읽은 다음 검색합니다.

Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)

설명

함수는 FileGetObject , , 등과 같은 LongIntegerShort다른 형식 대신 형식 Object 이 반환되는 경우 컴파일 시 모호성을 방지하기 위해 대신 FileGet 사용됩니다.

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

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

를 사용하여 FileGetObject 읽은 데이터는 일반적으로 로 FilePutObject작성됩니다.

파일의 첫 번째 레코드 또는 바이트는 1위, 두 번째 레코드 또는 바이트는 위치 2 등에 있습니다. 를 생략 RecordNumberFileGetObject 하면 마지막 또는 함수 뒤의 레코드 또는 바이트를 읽습니다FilePutObject(또는 마지막 FileGetObjectSeek 함수가 가리켰습니다).

임의 모드

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

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

  • 읽는 변수가 문자열인 경우 기본적으로 FileGetObject 문자열 길이가 포함된 2 바이트 설명자를 읽은 다음 변수로 들어가는 데이터를 읽습니다. 따라서 함수 절에 지정된 RecordLength 레코드 길이는 문자열의 FileOpen 실제 길이보다 2바이트 이상 커야 합니다. Visual Basic 6.0 및 이전 버전은 고정 길이 문자열을 지원하며 파일을 읽을 때 길이 설명자가 작성되지 않습니다. 설명자 없이 문자열을 읽으려면 매개 변수에 StringIsFixedLength 전달 True 해야 하며 읽은 문자열은 올바른 길이여야 합니다.

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

    예를 들어 배열을 디스크에 쓸 때 다음 배열 선언에는 218바이트가 필요합니다.

    Dim MyArray(4, 9) As Integer
    

    218바이트는 설명자에 대해 18바이트(2 + 8 * 2) 및 데이터에 대해 100바이트(5 * 10 * 4)와 같이 분산됩니다.

  • FileGetObject 는 요소 사이에 패딩이 없다는 점을 제외하고 구조체의 요소를 개별적으로 읽는 것처럼 읽습니다. 디스크에서 사용자 정의 형식의 동적 배열(으로 FilePutObject작성됨)은 길이가 차원 수의 2배와 8배인 설명자 접두사로 접두사로 지정됩니다( 2 + 8 * NumberOfDimensions). 함수의 RecordLength 절에 FileOpen 지정된 레코드 길이는 배열 및 설명자를 포함하여 개별 요소를 읽는 데 필요한 모든 바이트의 합계보다 크거나 같아야 합니다. 클래스는 VBFixedStringAttribute 디스크에 쓸 때 문자열의 크기를 나타내기 위해 구조체의 문자열 필드에 적용할 수 있습니다.

이진 모드

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

  • RecordLength 함수의 FileOpen 절은 영향을 주지 않습니다. FileGetObject 는 연속적으로 디스크에서 모든 변수를 읽습니다. 즉, 레코드 간에 패딩이 없습니다.

  • 구조 FileGetObject 체의 배열이 아닌 배열의 경우 데이터만 읽습니다. 설명자를 읽지 않습니다.

FileGetObject 는 2 바이트 길이 설명자를 기대하지 않고 구조체의 요소가 아닌 가변 길이 문자열을 읽습니다. 읽기 바이트 수는 문자열에 이미 있는 문자 수와 같습니다.

중요

파일에서 읽을 때 파일 이름 확장명을 기반으로 파일 내용에 대한 결정을 내리지 마세요. 예를 들어 Form1.vb 라는 파일은 Visual Basic 원본 파일이 아닐 수 있습니다.

적용 대상

추가 정보