ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MFC
    Platform/File(장치 IO) 2008. 12. 6. 23:31
    CFile
    <- CMemFile
    <- CSocketFile
    <- CStdioFile
    .Open()    // _fdopen()
    .Close()    // fclose()
    .Read()    // fread()
    .Write()    // fwrite()
    .ReadString()    // _fgetts()
    .WriteString()    // _fputts()
    .Seek()    // fseek()
    .GetPosition()    // ftell()
    .Flush()    // fflush()
    CInternetFile -> CStdioFile
    .Close()
    .Read()
    .Write()

    CFile
    m_hFile
    .GetFilePath()
    .GetFileName()
    .GetFileTitle()
    .GetLength()
    .Open()
    CFile::modeRead - 읽기
    CFile::modeWrite - 쓰기
    CFile::modeReadWrite - 읽기/쓰기
    CFile::modeCreate - 같은 이름의 파일이 이미 존재하더라도 새로운 파일을 생성
    CFile::modeNoTruncate
    CFile::shareExclusive - 파일에 대한 배타적인 액세스
    CFile::shareDenyWrite
    CFile::shareDenyRead
    CFile::shareDenyNone
    .Close()
    .Read() - 파일로부터 지정한 수만큼의 바이트를 (파일 I/O )버퍼로 읽는다. 반환 값은 실제로 읽은 바이트의 수로 파일의 끝을 만나게 되면, 요구했던 수보다 작을 수도 있다.
    .Write()
    .GetPosition() - 파일의 처음부터 현재 위치(파일 포인터?)까지의 오프셋
    .Seek() - 파일 포인터를 옮긴다.
    CFile::begin
    CFile::end
    CFile::current
    .SeekToBegin()
    .SeekToEnd()
    CFileException
    .Delete()
    .ReportError()
    m_cause
    CFileException::fileNotFound
    CFileException::toomanyOpenFiles
    CFileException::hardIO
    CFileException::sharingViolation
    CFileException ::diskFull
    CFileException ::endOfFile


    CFile file;
    CFileException e;
    if (0 == file.Open(_T("File.txt"), CFile::modeReadWrite, &e)) {
    e.ReportError();
    return -1;
    }
    ...
    file.Close();
    or
    try {
    CFile file(_T("File.txt"), CFile::modeReadWrite);
    ...
    } catch (CFileException *e) {
    e->ReportError();
    e->Delete();
    }


    BYTE buffer[0x1000];
    DWORD dwBytesRemaining = file.GetLength();
    while (dwBytesRemaining) {
    DWORD dwPosition = file.GetPosition();
    UINT nBytesRead = file.Read(buffer, sizeof(buffer));
    ...
    file.Seek(dwPosition, CFile::begin);
    file.Write(buffer, nBytesRead);

    dwBytesRemaining -= nBytesRead;
    }
    CString string;
    CStdioFile file(_T("File.txt"), CFile::modeRead);
    while (file.ReadString(string)
    ...


    참조 사이트:
Designed by Tistory.