具体代码详见我上传的资源:
https://download.csdn.net/download/skyksksksksks/87500896
VS C++上操作文件麻烦不麻烦?
如果没有TCHAR、没有ANIS编码和Unicode编码之争,那么的确很简单,
但是如果你只想用C函数操作文件,又要兼顾TCHAR、ANIS编码和Unicode编码,
那肯定就头疼了。
并且C++不会自动管理内存,所以还得时不时担心内存是否会越界,是不是觉得有点烦?
然后还有如果要处理ini文件呢,还有如果要处理xml文件呢?
问题很多,怎么办?
其实不用急,无非就是将这些函数整合起来,
处理一下数据问题,然后封装成一个类,
不就可以随取随用了吗?
为了解决这种尴尬的问题,我索性自己写一个类,
将这些功能做到一个函数中,方便以后使用。
类中函数声明见下方:
/*
@param
pctszFilePath 文件路径
lDataSize 数据大小
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
@return
>=0 成功、-1 失败
*/
long DataSize(LPCTSTR pctszFilePath, long &lDataSize, long lOperatorType);
/*
@param
pctszFilePath 文件路径
pucData 数据
lDataSize 数据大小
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
bAppend 是否追加,TRUE 追加、FALSE 不追加(会清空原有数据)
lOffsetType 偏移类型,0 文件开头、1 文件当前位置、2 文件末尾
lOffset 偏移(单位字节),0 无偏移、>0 向文件末尾偏移、<0 向文件开头偏移
@return
>=0 成功、-1 失败
*/
long WriteByte(LPCTSTR pctszFilePath, UCHAR *pucData, long lDataSize, long lOperatorType, BOOL bAppend = FALSE, long lOffsetType = 1, long lOffset = 0);
/*
@param
pctszFilePath 文件路径
pucData 数据
lDataSize 数据大小(返回时为数据实际大小)
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
lOffsetType 偏移类型,0 文件开头、1 文件当前位置、2 文件末尾
lOffset 偏移(单位字节),0 无偏移、>0 向文件末尾偏移、<0 向文件开头偏移
@return
>=0 成功、-1 失败
*/
long ReadByte(LPCTSTR pctszFilePath, UCHAR *pucData, long &lDataSize, long lOperatorType, long lOffsetType = 1, long lOffset = 0);
/*
@param
pctszFilePath 文件路径
pctszString 字符串
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
bAppend 是否追加,TRUE 追加、FALSE 不追加(会清空原有数据)
lOffsetType 偏移类型,0 文件开头、1 文件当前位置、2 文件末尾
lOffset 偏移(单位字节),0 无偏移、>0 向文件末尾偏移、<0 向文件开头偏移
@return
>=0 成功、-1 失败
*/
long WriteString(LPCTSTR pctszFilePath, LPCTSTR pctszString, long lOperatorType, BOOL bAppend = FALSE, long lOffsetType = 1, long lOffset = 0);
/*
@param
pctszFilePath 文件路径
ptszString 字符串
lStringLength 字符串长度
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
lOffsetType 偏移类型,0 文件开头、1 文件当前位置、2 文件末尾
lOffset 偏移(单位字节),0 无偏移、>0 向文件末尾偏移、<0 向文件开头偏移
@return
>=0 成功、-1 失败
*/
long ReadString(LPCTSTR pctszFilePath, LPTSTR ptszString, long lStringLength, long lOperatorType, long lOffsetType = 1, long lOffset = 0);
/*
@param
pctszFilePath 文件路径
pctszKeyName1 键名1
pctszKeyName2 键名2
pctszString 字符串
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
@return
0 成功、-1 失败
*/
long WriteString(LPCTSTR pctszFilePath, LPCTSTR pctszKeyName1, LPCTSTR pctszKeyName2, LPCTSTR pctszString, long lOperatorType);
/*
@param
pctszFilePath 文件路径
pctszKeyName1 键名1
pctszKeyName2 键名2
ptszString 字符串
lStringLength 字符串长度
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
@return
0 成功、-1 失败
*/
long ReadString(LPCTSTR pctszFilePath, LPCTSTR pctszKeyName1, LPCTSTR pctszKeyName2, LPTSTR ptszString, long lStringLength, long lOperatorType);
/*
@param
pctszFilePath 文件路径
pctszKeyName1 键名1
pctszKeyName2 键名2
uiData 数据
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
@return
0 成功、-1 失败
*/
long WriteInt(LPCTSTR pctszFilePath, LPCTSTR pctszKeyName1, LPCTSTR pctszKeyName2, UINT uiData, long lOperatorType);
/*
@param
pctszFilePath 文件路径
pctszKeyName1 键名1
pctszKeyName2 键名2
uiData 数据
lOperatorType 操作类型,1 C函数、2 C++函数、3 MFC函数、4 Windows API
@return
0 成功、-1 失败
*/
long ReadInt(LPCTSTR pctszFilePath, LPCTSTR pctszKeyName1, LPCTSTR pctszKeyName2, UINT &uiData, long lOperatorType);