文件属性克隆器

本文介绍了一个简单的文件属性克隆器程序,该程序能够复制文件的时间戳属性,并提供了获取和设置文件属性的方法。通过示例展示了如何使用Windows API进行文件属性的复制。
/************************************************************************/
/* 
 *   Name: 文件属性克隆器 <CloneAttribute.cpp>
 *
 * Author: M.A.O
 *   
 * E-mail: Inventworm@hotmail.com
 *
 * Compiled on : Windows XP2 VC++6.0
 
*/

/************************************************************************/

#include 
<windows.h>
#include 
<iostream.h>
#include 
<stdio.h>

FILETIME ftCreate;
FILETIME ftWrite;
FILETIME ftAccess;
FILETIME ftCreate_last;
FILETIME ftWrite_last;
FILETIME ftAccess_last;

//获得系统根目录
char* _GetSysDirectory();

//获得克隆文件句柄
HANDLE _GetFileHandle(char* pszFile);

//获得文件时间信息
BOOL _GetFileTimeInfo(HANDLE hFile);

//设置文件时间信息
BOOL _SetFileTimeInfo(HANDLE hFile);

//获得文件属性信息
DWORD _GetFileAttrbute(char* pszFileName);

//设置文件属性信息
BOOL _SetFileAttribute(char* pszFileName);

//使用方法
void Usage();

int main(int argc,char* argv[])
{
    
//文件名或者文件路径
    char szFile_1[MAX_PATH];
    
char szFile_2[MAX_PATH];

    HANDLE hFile_1 
= NULL;
    HANDLE hFile_2 
= NULL;

    BOOL bGetFileTime 
= FALSE;
    BOOL bSetFileTime 
= FALSE;

    DWORD dwGetFileAttributes 
= 0;

    cout
<<"请输入拷贝源文件:";
    cin
>>szFile_1;

    cout
<<"请输入目标文件:";
    cin
>>szFile_2;
    
    hFile_1 
= _GetFileHandle(szFile_1);
    hFile_2 
= _GetFileHandle(szFile_2);

    
if (hFile_1 == INVALID_HANDLE_VALUE)
    
{
        cout
<<"CreateFile_1 Failed...."<<endl;
    }

    
    
if (hFile_2 == INVALID_HANDLE_VALUE)
    
{
        cout
<<"CreateFile_2 Failed...."<<endl;
    }


    
if (!_GetFileTimeInfo(hFile_1))
    
{
        cout
<<"GetFileTime Failed...."<<endl;
    }

    
else
    
{
        ftCreate_last 
= ftCreate;
        ftAccess_last 
= ftAccess;
        ftWrite_last  
= ftWrite;
    }


    
if (!_SetFileTimeInfo(hFile_2))
    
{
        cout
<<"SetFileTime Failed...."<<endl;
    }


    dwGetFileAttributes 
= _GetFileAttrbute(szFile_1);

    cout
<<"FileAttribute"<<dwGetFileAttributes<<endl;
    
    cout
<<"File_1-"<<hFile_1<<endl;
    cout
<<"File_2-"<<hFile_2<<endl;

    
return 0;
}


char* _GetSysDirectory()
{
    
char *temp = NULL;

    
return temp;
}


HANDLE _GetFileHandle(
char* pszFile)
{
    HANDLE hFile 
= NULL;

    hFile 
= CreateFile(pszFile,GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

    
return hFile;
}


BOOL _GetFileTimeInfo(HANDLE hFile)
{
    BOOL bGetFileTime 
= FALSE;
    
    bGetFileTime 
= GetFileTime(hFile,&ftCreate,&ftAccess,&ftWrite);

    
return bGetFileTime;
}


BOOL _SetFileTimeInfo(HANDLE hFile)
{
    BOOL bSetFileTime 
= FALSE;

    bSetFileTime 
= SetFileTime(hFile,&ftCreate_last,&ftAccess_last,&ftWrite_last);

    
return bSetFileTime;
}


DWORD _GetFileAttrbute(
char* pszFileName)
{
    DWORD dwFileAttribute 
= 0;

    dwFileAttribute 
= GetFileAttributes(pszFileName);

    
return dwFileAttribute;
}


BOOL _SetFileAttribute(
char* pszFileName)
{
    
return FALSE;
}


void Usage()
{

}


/************************************************************************/
/* #define FILE_SHARE_READ                 0x00000001  
#define FILE_SHARE_WRITE                0x00000002  
#define FILE_SHARE_DELETE               0x00000004  
#define FILE_ATTRIBUTE_READONLY             0x00000001  
#define FILE_ATTRIBUTE_HIDDEN               0x00000002  
#define FILE_ATTRIBUTE_SYSTEM               0x00000004  
#define FILE_ATTRIBUTE_DIRECTORY            0x00000010  
#define FILE_ATTRIBUTE_ARCHIVE              0x00000020  
#define FILE_ATTRIBUTE_ENCRYPTED            0x00000040  
#define FILE_ATTRIBUTE_NORMAL               0x00000080  
#define FILE_ATTRIBUTE_TEMPORARY            0x00000100  
#define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200  
#define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400  
#define FILE_ATTRIBUTE_COMPRESSED           0x00000800  
#define FILE_ATTRIBUTE_OFFLINE              0x00001000  
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000  
#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001   
#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002   
#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004   
#define FILE_NOTIFY_CHANGE_SIZE         0x00000008   
#define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010   
#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020   
#define FILE_NOTIFY_CHANGE_CREATION     0x00000040   
#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100   
#define FILE_ACTION_ADDED                   0x00000001   
#define FILE_ACTION_REMOVED                 0x00000002   
#define FILE_ACTION_MODIFIED                0x00000003   
#define FILE_ACTION_RENAMED_OLD_NAME        0x00000004   
#define FILE_ACTION_RENAMED_NEW_NAME        0x00000005   
#define MAILSLOT_NO_MESSAGE             ((DWORD)-1) 
#define MAILSLOT_WAIT_FOREVER           ((DWORD)-1) 
#define FILE_CASE_SENSITIVE_SEARCH      0x00000001  
#define FILE_CASE_PRESERVED_NAMES       0x00000002  
#define FILE_UNICODE_ON_DISK            0x00000004  
#define FILE_PERSISTENT_ACLS            0x00000008  
#define FILE_FILE_COMPRESSION           0x00000010  
#define FILE_VOLUME_QUOTAS              0x00000020  
#define FILE_SUPPORTS_SPARSE_FILES      0x00000040  
#define FILE_SUPPORTS_REPARSE_POINTS    0x00000080  
#define FILE_SUPPORTS_REMOTE_STORAGE    0x00000100  
#define FILE_VOLUME_IS_COMPRESSED       0x00008000  
#define FILE_SUPPORTS_OBJECT_IDS        0x00010000  
#define FILE_SUPPORTS_ENCRYPTION        0x00020000  
                                                                     
*/

/************************************************************************/
 因为时间关系,功能还没有写完,现在仅仅实现了文件时间的Copy,应该还有一个属性的拷贝,这个已经给出了思路,其实上面的写法有些冗余,完全可以调用GetFileAttributesEx函数得到所有的信息,有兴趣的话可以试试,不明白的可以参照MSDN或者联系我,大家一同学习
【评估多目标跟踪方法】9个高度敏捷目标在编队中的轨迹和测量研究(Matlab代码实现)内容概要:本文围绕“评估多目标跟踪方法”,重点研究9个高度敏捷目标在编队飞行中的轨迹生成与测量过程,并提供完整的Matlab代码实现。文中详细模拟了目标的动态行为、运动约束及编队结构,通过仿真获取目标的状态信息与观测数据,用于验证和比较不同多目标跟踪算法的性能。研究内容涵盖轨迹建模、噪声处理、传感测量模拟以及数据可视化等关键技术环节,旨在为雷达、无人机编队、自动驾驶等领域的多目标跟踪系统提供可复现的测试基准。; 适合人群:具备一定Matlab编程基础,从事控制工程、自动化、航空航天、智能交通或人工智能等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多目标跟踪算法(如卡尔曼滤波、粒子滤波、GM-CPHD等)的性能评估与对比实验;②作为无人机编队、空中交通监控等应用场景下的轨迹仿真与传感数据分析的教学与研究平台;③支持对高度机动目标在复杂编队下的可观测性与跟踪精度进行深入分析。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注轨迹生成逻辑与测量模型构建部分,可通过修改目标数量、运动参数或噪声水平来拓展实验场景,进一步提升对多目标跟踪系统设计与评估的理解。
本软件实现了一种基于时域有限差分法结合时间反转算法的微波成像技术,旨在应用于乳腺癌的早期筛查。其核心流程分为三个主要步骤:数据采集、信号处理与三维可视化。 首先,用户需分别执行“WithTumor.m”与“WithoutTumor.m”两个脚本。这两个程序将在模拟生成的三维生物组织环境中进行电磁仿真,分别采集包含肿瘤模型与不包含肿瘤模型的场景下的原始场数据。所获取的数据将自动存储为“withtumor.mat”与“withouttumor.mat”两个数据文件。 随后,运行主算法脚本“TR.m”。该程序将加载上述两组数据,并实施时间反转算法。算法的具体过程是:提取两组仿真信号之间的差异成分,通过一组专门设计的数字滤波对差异信号进行增强与净化处理,随后在数值模拟的同一组织环境中进行时间反向的电磁波传播计算。 在算法迭代计算过程中,系统会按预设的周期(每n次迭代)自动生成并显示三维模拟空间内特定二维切面的电场强度分布图。通过对比观察这些动态更新的二维场分布图像,用户有望直观地识别出由肿瘤组织引起的异常电磁散射特征,从而实现病灶的视觉定位。 关于软件的具体配置要求、参数设置方法以及更深入的技术细节,请参阅软件包内附的说明文档。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值