BOOL BIniFile::SaveFile(const char *const fileName) const { BZ_CHECK_C_STRING_RETURN_BOOL(fileName); std::ofstream fileOut(fileName); if (!fileOut) { assert(false); return FALSE; } // need add lipengfei 2013/03/21 int nSegCount = m_segArray.size(); int nKeyCount = 0; for (int i = 0; i != nSegCount; ++i) { nKeyCount = m_segArray[i].m_keyArray.size(); fileOut << "[" << m_segArray[i].m_bssSeg.m_cpStr << "]" << std::endl; for (int j = 0; j != nKeyCount; ++j) { fileOut << m_segArray[i].m_keyArray[j].m_bssKey.m_cpStr << "=" << m_segArray[i].m_keyArray[j].m_bssValue.m_cpStr << std::endl; } } fileOut.close(); return TRUE; }
BOOL BIniFile::LoadFile(const char *const fileName) { BZ_CHECK_C_STRING_RETURN_BOOL(fileName); std::ifstream fileIn(fileName); if (!fileIn) { assert(false); return FALSE; } char buffer[LINE_BUFFER_SIZE]; bool getSeg = false; size_t nBufLen = 0; int nAssPos = 0; while (!fileIn.eof()) { fileIn.getline(buffer, LINE_BUFFER_SIZE); if ((!getSeg) && (!IsSegment(buffer))) { continue; } if (IsComment(buffer)) { continue; } if (IsSegment(buffer)) { BSegmentNode seg; getSeg = true; nBufLen = strlen(buffer); buffer[nBufLen - 1] = '\0'; seg.m_bssSeg = BSimpleString(buffer + 1); m_segArray.push_back(seg); continue; } if (-1 != (nAssPos = IsKeyNode(buffer))) { BKeyNode key; buffer[nAssPos] = '\0'; key.m_bssKey = BSimpleString(buffer); key.m_bssValue = BSimpleString(buffer + nAssPos + 1); m_segArray.back().AddKey(key); continue; } } fileIn.close(); return TRUE; }
BOOL BFile::Open(const char* const cpcFile, const char* const cpcMode) { BZ_CHECK_C_STRING_RETURN_BOOL(cpcFile); BOOL bRet = FALSE; m_hFile = fopen(cpcFile, cpcMode); BZ_PROCESS_ERROR(m_hFile); if (strchr(cpcMode, 'b')) m_bBinaryFile = TRUE; else m_bBinaryFile = FALSE; bRet = TRUE; Exit0: return bRet; }