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 함수는 형식이 다른 형식Object(예: IntegerLong``Short) 대신 반환되는 경우 컴파일 시 모호성을 방지하는 대신 FileGet 사용됩니다.

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

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

FileGetObject 은 데이터는 일반적으로 .로 FilePutObject작성됩니다.

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

임의 모드

모드에서 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 원본 파일이 아닐 수 있습니다.

적용 대상

추가 정보