共有2个问题1)c:\a\b.txt 有什么函数可以分解成: c:\a\ 和 b.txt ?2) 我要保存临时文件,想用BT这种方式
BT 会在临时文件后加个 .rc!
比如最终文件名是 c:\b.rmvb BT会把临时文件命名为 c:\b.rmvb.rc!
我的问题是 如果b.rmvb 这个b是一个很长的文件名,比如有_MAX_PATH这么长
那改名成b.rmvb.rc! 岂不是超过了文件名的最大长度? 请教大家这里的处理思路谢谢!
BT 会在临时文件后加个 .rc!
比如最终文件名是 c:\b.rmvb BT会把临时文件命名为 c:\b.rmvb.rc!
我的问题是 如果b.rmvb 这个b是一个很长的文件名,比如有_MAX_PATH这么长
那改名成b.rmvb.rc! 岂不是超过了文件名的最大长度? 请教大家这里的处理思路谢谢!
解决方案 »
- 控件按钮的问题
- 关于颜色变化不能实时显示的问题
- 单步调试 结果正确 直接执行 结果不正确
- 怎么使程序的运行过程中一直伴随指定的音乐呢?谢谢
- 求助一个半透明的矩形或者位图
- 请帮忙:如何编程控制其它的应用程序,使之滚动窗口???
- 程序中需要一个新的数据类型,在类里面定义一个结构体呢还是在类外定义?
- sql语句insert插入行能保证插入行在原表的最后吗?有什么方法可以做到这一点?
- DWORD_PTR该包括什么头文件啊?
- CListView 实时刷新数据的时候,怎么锁定显示选中行
- [急]关于DLL中输出string类型的问题
- 既然MFC在所有窗口创建的时候用AfxWndProc替换掉了原窗口过程,那还要SubclassWindow方法做什么?
char exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//将其格式化为字符串
m_TempFile.Format("%s",exeFullPath);
//去掉应用程序的全名(10为应用程序文件全名的长度)
exeFullPath[m_TempFile.GetLength()-10]='\0';
//得到应用程序所在路径
m_TempFile.Format("%s",exeFullPath);
//得到临时文件的全路径
m_TempFile+="b.txt";
文件名超长超过了就给截掉了,如果不想把.rc后缀截掉,自己定一个处理方式,类似dos下bbbb~1也行啊:-)
#include <stdio.h>void main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT]; sprintf(path_buffer, "c:\\sample\\crt\\abc.txt" );
_splitpath( path_buffer, drive, dir, fname, ext );
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );2.MAX_PATH是系统要求的,所以不要超过。
CString strFilePath = strFile.Left(strFile.ReverseFind('\\')+1);
CString strFileName = strFile.Right(strFile.GetLength()-strFile.ReverseFind('\\')-1);2.判断文件名长度超过_MAX_PATH就截断,windows也是这么做的
_stprintf(szPathName,_T("c:\\a\\b.txt "));TCHAR szDrv[MAX_PATH];
TCHAR szDir[MAX_PATH];
TCHAR szFileName[MAX_PATH];
_tsplitpath(szPathName, szDrv, szDir, szFileName, NULL);
也可以用CString.ReverseFind找最后一个\然后用Left/Right来分解
2.如果超了文件的长度限制就需要楼主变通了。
[in] A pointer to a null-terminated string that specifies the name of an object to create or open. In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.来自 MSDN