 |
[原创]内存文件读写类CMemoryFile(内存中模拟目录和文件)
|
|
| |
| 项目中常常需要将中间结果进行保存, 以供后续步骤进行处理. 如果以临时文件的方式往往容易"暴露"中间机密信息. 同时,文件IO读写也较浪费时间(说到这里,不得不BS一下windows的文件系统,当一个目录下的文件数目超过10000时,读写文件相当慢,Linux却没有这样的问题).
面对上面情况,本人想到了内存机制:
如果中间结果数据不超过2G(32位windows的内存地址上限).可以在内存中模拟一个文件系统.将这些信息以"内存文件"形式保存在"内存",同时也能提供"内存目录"(或"内存Db")支持.
下面是"内存文件类"的使用示例(使用上和一般的文件类没任何区别,只是不在磁盘上生成文件):
CMemoryFile pfile;
pfile.fopen( "c:/www/1235.bxk", "wb" );
pfile.fprintf( "aaa\nbbb\n" );
pfile.fclose();
CMemoryFile pfile0;
pfile0.fopen( "c:/www/1234.bxk", "wb" );
pfile0.fprintf( "aaa\nbbb\n" );
pfile0.fclose();
...
|
|
| 作者:成长的蚊子 highshow张贴于2008-02-22 14:00:15.0,共阅读652次,回复2次 |
|
|
 |
文件类型及相关打开程序的注册
|
|
| |
| 譬如:注册文件类型.pln,为其指定文件类型图标,并使用当前程序作为默认打开程序。
调用如下:
RegisterShellFileType(".pln", "Plan.Documnet", "规划文件", 1);
其中参数的含义:
filterExt:文件后缀名
fileTypeID:文件类型ID
fileTypeDesc:文件描述
iconIndex:文件图标在当前程序中的索引BOOL CPlanningApp::RegisterShellFileType(CString filterExt, CString fileTypeID, CString fileTypeDesc, int iconIndex)
{
CString strPathName, strTemp;
TCHAR szLongPathName[_MAX_PATH];
TCHAR szShortPathName[_MAX_PATH];
::GetModuleFileName(this->m_hInstance, szLongPathName, _MAX_PATH);
if (::GetShortPathName(szLongPathName, szShortPathName, _MAX_PATH) == 0)
{
// rare failure case (es ...
|
|
| 作者:不祥 bluejoe张贴于2007-01-16 13:50:13.0,共阅读2076次,回复1次 |
|
|
 |
创建文件的快捷方式
|
|
| |
| BOOL CShell::CreateLink(CString sPathSource, CString sPathLink, CString sDescription)
{
return CreateLink((LPCITEMIDLIST)(LPSTR)(LPCTSTR)sPathSource, sPathLink, sDescription, TRUE);
}
BOOL CShell::CreateLink(LPCITEMIDLIST lpi, CString sPathLink, CString sDescription, BOOL bByName)
{
HRESULT hres;
IShellLink * psl;
//Get a pointer to the IShellLink interface.
hres =
CoCreateInstance(
CLSID_ShellLink,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void * *) & psl);
if (SUCCEEDED(hres))
{
IPersistFile * ppf;
// Set the path to the shortcut targ ...
|
|
| 作者:不祥 bluejoe张贴于2004-03-10 15:02:26.0,共阅读1652次,回复0次 |
|
|
|