CString 文件修改指定位置的字符串(文件大小不变)
2017-12-02 17:21
267 查看
int modify_file_psn( const CString& FilePath, char *psn, int write_file_pos )
{
ASSERT(FilePath != "");
char* pszBuffer = NULL;
CString fileString;
CString filelineString_L, filelineString_M, filelineString_R;
CString filelineString_LMR;
CStdioFile f;
CFileException e;
int pre_pos, current_pos, new_pos;
int ret;
int length;
int find_line;
const int BUFFER_LENGTH = 1024 * 2;
pszBuffer = new char[BUFFER_LENGTH];
if( !f.Open( FilePath, CFile::modeReadWrite, &e) ){
return FALSE;
}
find_line = 0x00;
while( f.ReadString(fileString) != FALSE ){
//g.WriteString( DecimalToBinary(fileString)+"\r\n");
ret = fileString.Find( L"var code = String" );
if( ret == -1 ){
pre_pos = f.GetPosition();
continue;
}else{
find_line = 0x01;
current_pos = f.GetPosition();
TRACE( "fileString = %S.\n", fileString );
break;
}
}
if( find_line == 0x00 ){
goto exit_func;
}
TRACE( "pre_pos = %d.\n", pre_pos );
TRACE( "current_pos = %d.\n", current_pos );
length = fileString.GetLength();
TRACE( "length = %d.\n", length );
//ÐÞ¸Ä×Ö·û´®,×ܳ¤¶È²»ÒªÐÞ¸Ä
if( current_pos == (pre_pos+length+2) ){
TRACE( "match ok.\n" );
ret = fileString.Find( L"(" );
TRACE( "ret = %d.\n", ret );
if( ret == -1 ){
goto exit_func;
}
filelineString_L = fileString.Left(ret);
ret = fileString.Find( L")" );
filelineString_R = fileString.Right(length-ret-1);
filelineString_M.Format(L"(%S)", psn);
filelineString_LMR = filelineString_L + filelineString_M + filelineString_R;
length = filelineString_LMR.GetLength();
TRACE( "length = %d.\n", length );
f.Seek( pre_pos, CFile::begin );
f.WriteString( filelineString_LMR );
new_pos = f.GetPosition();
TRACE( "new_pos = %d.\n", new_pos );
}
exit_func:
f.Flush();
f.Close();
delete[] pszBuffer;
pszBuffer = NULL;
return true;
}
{
ASSERT(FilePath != "");
char* pszBuffer = NULL;
CString fileString;
CString filelineString_L, filelineString_M, filelineString_R;
CString filelineString_LMR;
CStdioFile f;
CFileException e;
int pre_pos, current_pos, new_pos;
int ret;
int length;
int find_line;
const int BUFFER_LENGTH = 1024 * 2;
pszBuffer = new char[BUFFER_LENGTH];
if( !f.Open( FilePath, CFile::modeReadWrite, &e) ){
return FALSE;
}
find_line = 0x00;
while( f.ReadString(fileString) != FALSE ){
//g.WriteString( DecimalToBinary(fileString)+"\r\n");
ret = fileString.Find( L"var code = String" );
if( ret == -1 ){
pre_pos = f.GetPosition();
continue;
}else{
find_line = 0x01;
current_pos = f.GetPosition();
TRACE( "fileString = %S.\n", fileString );
break;
}
}
if( find_line == 0x00 ){
goto exit_func;
}
TRACE( "pre_pos = %d.\n", pre_pos );
TRACE( "current_pos = %d.\n", current_pos );
length = fileString.GetLength();
TRACE( "length = %d.\n", length );
//ÐÞ¸Ä×Ö·û´®,×ܳ¤¶È²»ÒªÐÞ¸Ä
if( current_pos == (pre_pos+length+2) ){
TRACE( "match ok.\n" );
ret = fileString.Find( L"(" );
TRACE( "ret = %d.\n", ret );
if( ret == -1 ){
goto exit_func;
}
filelineString_L = fileString.Left(ret);
ret = fileString.Find( L")" );
filelineString_R = fileString.Right(length-ret-1);
filelineString_M.Format(L"(%S)", psn);
filelineString_LMR = filelineString_L + filelineString_M + filelineString_R;
length = filelineString_LMR.GetLength();
TRACE( "length = %d.\n", length );
f.Seek( pre_pos, CFile::begin );
f.WriteString( filelineString_LMR );
new_pos = f.GetPosition();
TRACE( "new_pos = %d.\n", new_pos );
}
exit_func:
f.Flush();
f.Close();
delete[] pszBuffer;
pszBuffer = NULL;
return true;
}
相关文章推荐
- python 批量修改预定字符串并将修改后的字符串插入文件指定位置
- 递归修改文件中指定字符串
- Dream------Java--ant zip 对压缩文件进行指定位置的修改
- 修改文件名字,删除指定大小的文件一记
- 将字符串写入txt文件的指定位置
- 修改字符串中一段的颜色——字符串改变指定位置的颜色
- 利用matlab把指定字符串在原位置替换为新的字符串(替换txt文件中的部分数据)
- tomcat图片上传指定位置并显示(修改配置文件)
- 修改 PHP 上传文件大小的两处修改位置
- CString 字符串指定修改某个字符
- javaNIO局部修改文件中指定位置的部分数据
- 获取文件的详细属性,大小,修改日期,所在位置等
- java中使用sfntly的sfnttool.jar 抽取指定中文字符串ttf文件,简化、裁剪ttf字体库文件大小,java缩小中文ttf字体库文件大小
- 修改文件指定字符串
- 修改Apache配置指定php配置文件php.ini的位置方法
- 1.实验 5.2.5 文件定位 用lseek()函数实现以下功能 1. 获取文件大小 2. 为文件添加指定长度的空洞 3. 在指定位置写入指定内容 4. 读出指定位置的内容 1. 获取文件大小
- CP大于指定大小的文件到指定位置
- 修改文件指定位置
- C/C++在文件指定位置插入字符串或者空行
- Android 通过java代码实现修改指定路径文件的读写权限。