文件属性和删除只读文件,刷新

本文介绍了两种删除Windows系统中只读文件的方法:一是通过修改文件属性取消只读属性后删除;二是使用SHFileOperation函数进行删除。同时提供了相关API的使用示例。

一、删除只读文件

     DeleteFile删除文件:拒绝访问(5).

    文件为只读属性,不能用 DeleteFile直接删除两种处理方法

    详见MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365535(v=vs.85).aspx

    FILE_ATTRIBUTE_READONLY:file that is read-only. Applications can read the file, but cannot write to it or delete it

    1:修改文件属性

     DWORD  dwAttribute=GetFileAttributes(Filename);
      if(dwAttribute  &  FILE_ATTRIBUTE_READONLY)
     {   
       dwAttribute   &=   ~FILE_ATTRIBUTE_READONLY;  
       SetFileAttributes(Filename,dwAttribute);
      }   

   SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY);    // 设定为只读
   SetFileAttributes(文件名, FILE_ATTRIBUTE_HIDDEN );       //设定为隐藏
   SetFileAttributes(文件名, FILE_ATTRIBUTE_SYSTEM);        //设定为系统
   SetFileAttributes(文件名, FILE_ATTRIBUTE_ARCHIVE);       //设定为保存
   SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL);       //设定为一般 (取消前四种属性)

   或者使用 SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL),取消所有的特定属性,再进行删除操作。

 

SHChangeNotify:更改属性后刷新

   if (!SetFileAttributes(path, FILE_ATTRIBUTE_SYSTEM))

return GetLastError();
   SHChangeNotify(SHCNE_ATTRIBUTES, SHCNF_PATH, directory, NULL);

详见MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

   2:shfileoperation

  详见MSDN:https://msdn.microsoft.com/en-us/library/bb759795(VS.85).aspx

                  https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

                SHFILEOPSTRUCT op;
   memset(&op, 0, sizeof(op));
   op.fFlags =FOF_NOCONFIRMATION;                                    //不弹出确认对话框
   op.pFrom = Path;                                                               //文件路径
   op.wFunc = FO_DELETE;                                                    //操作
   FindClose(hFind);
   return SHFileOperation(&op);                                              //SHFileOperation(&op)不能用getlasterror来获得错误码

### 解决Vivado中自定义IP核文件只读属性的方法 在处理Vivado项目时,有时会遇到自定义IP核更新后变为只读的情况[^1]。当尝试修改这些文件时,系统不允许任何更改操作。为了能够编辑这些文件并继续开发工作,可以采取以下几种策略: #### 1. 使用Tcl脚本重新生成IP 对于已经存在的IP核心,可以通过编写特定的TCL命令来刷新整个IP模块的状态。这通常涉及到删除旧版的`.xci`文件以及关联的数据缓存(`*.dcp`),之后再次运行综合过程以重建最新的设计版本。 ```tcl set ip_name "your_ip_core" file delete -force ${ip_name}.xci *.dcp create_ip -name $ip_name ... generate_target all [get_files ./${ip_name}.xci] ``` 这种方法不仅解决了只读权限的问题,还确保了所有组件都是最新状态下的产物[^3]。 #### 2. 调整源码管理设置 如果目标是对底层Verilog/VHDL代码做调整,则需注意项目的源控制选项。默认情况下,某些版本可能启用了保护机制防止意外改动官方提供的模板或库函数。此时应该进入Project Settings -> IP Cache Management界面取消勾选“Lock the source files of this project”,从而允许自由访问编辑原始RTL级描述。 #### 3. 手动变更操作系统层面的文件属性 作为最后手段,在确认不会影响其他依赖关系的前提下,可以直接利用Windows/Linux自带工具改变指定路径下对应文件夹及其内部项的访问模式。例如,在Linux终端执行如下指令可移除readonly标记: ```bash chmod u+w /path/to/ip/files/* ``` 值得注意的是,上述措施仅适用于本地副本;一旦涉及团队协作环境或是共享存储设备上的资源同步问题,则建议先备份重要资料再谨慎行事[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值