delphi删除只读文件
只读文件就是不能删除的文件,用DeleteFile函数对它来说是毫无意义的,要删除只读文件,只有先改变它的属性。如果你要删除一个文件,最好先作两个方面的考虑:
(1)判断该文件的属性。可以用上面提到的FileGetAttr与FileSetAttr函数。如果属性为只读,将它改为存档,然后删除它。
(2)先用DeleteFile函数试删除一下该文件,如果返回值为假,表示没有删除成功,在对该文件进行属性修改,将它改为存档,然后再用DeleteFile进行删除。
第二种方法是常用的文件删除方法,如果你想彻底删除某文件,而不顾它的属性,最好用这种方法,它的典型写法就是:
|
1
2
3
4
5
|
if(not DeleteFile('文件名')) thenbegin FileSetAttr('文件名',faArchive); DeleteFile('文件名');end; |
关于只读文件,还有几点补充说明:
(1)文件存储在不可改动的介质上后,属性自动改为只读,如将文件刻录到光盘后,文件就变为只读了。再将光盘的文件重新拷回磁盘时,文件属性还是只读,如果不改变这个只读属性,这个文件就没法再进行内容写入了。因此,凡将光盘的文件直接拷回到磁盘后,如果这些文件还需要使用,例如进行读与写,就必须去掉只读属性。
(2)只读文件windows NT/2000/xp系统中不能用OpenFile函数打开,为什么要做这样的限制,只有微软才知道。如果你设计的软件要在多平台上运行,一定要在那个平台上测试一下,不是所有的函数都能在各个平台上正常使用的。
(3)用FileCreate文件创建函数,可以将同名的只读文件覆盖,为什么这个函数没有做出限制,也只有微软才知道。
以上这些,只是从程序上讲了如何删除只读文件,如果要在windows上手工操作,什么样的文件都可以删除,可想而知,这个系统的安全性是多么脆弱。
转载请注明出处:http://www.ppblog.cn/delphidelfaarchive.html
delphi删除只读文件的更多相关文章
- C#删除只读文件或文件夹(解决File.Delete无法删除文件)
引用: http://www.jb51.net/article/72181.htm C#删除只读文件的方法: if (File.GetAttributes(FFName).ToString().I ...
- dotnet 删除只读文件
如果直接通过 File.Delete 删除只读文件会出现没有权限提示,可以先设置文件不是只读然后删除文件 try { File.Delete(file); } catch (UnauthorizedA ...
- 转:delphi 删除指定文件夹下所有文件
function TFtpContentThd.DeleteDirectory(NowPath: string): Boolean; var search: TSearchRec; ret: inte ...
- C#删除只读文件
File.SetAttributes(fileRealPath, FileAttributes.Normal);//先将文件设置成普通属性 //...你的删除文件的代码
- DELPHI删除记录文件
http://blog.itpub.net/729024/viewspace-564890/ DBGrid1.SelectedRows.Delete;
- bat 延时删除指定文件夹中的文件经验分享
1.bat延时 xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行. win7中通过timeout 20 来实现延时20秒. 2.删除指定文件 del /q ...
- Windows -- 使用批处理文件.bat删除旧文件
Windows -- 写一个批处理文件.bat删除旧文件 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件 Forfiles /p D:\temp ...
- int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件
int.TryParse非预期执行引发的思考 问题出现 这天在写一个页面,想谨慎些就用了int.TryParse,结果出问题了. 代码如下: Copy int id = 1000; //Reque ...
- Windows下使用批处理文件.bat删除旧文件
本文教大家写一个批处理文件.bat删除旧文件,供大家参考,具体内容如下 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件Forfiles /p E:\b ...
随机推荐
- ios改变系统默认样式
iso系统下默认不能修改submit样式,于是加上如下属性就可以修改: -webkit-appearance:none; -moz-appearance:none; 先记录下.
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...
- 浙江大学2015年校赛F题 ZOJ 3865 Superbot BFS 搜索
不知道为什么比赛的时候一直想着用DFS 来写 一直想剪枝结果还是TLE = = 这题数据量不大,又是问最优解,那么一般来说是用 BFS 来写 int commandi[4] = {1, 2, 3, 4 ...
- 【细说Java】揭开Java的main方法神秘的面纱(转)
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- Pencil OJ 02 安装
Mongo 官方的安装方法 官方教程已经很好啦,这里就不罗嗦了. 源码编译 待补.我是从这里看到的. 遇到的问题 启动时的警告信息 2015-03-06T21:01:15.526-0800 I CON ...
- libvirt(virsh命令介绍)
有了virt-install是安装虚拟机的命令,当然也需要一个管理虚拟机的命令了,那就是virsh. virsh命令使用 virsh <command> <domain-id> ...
- Derby的下载安装和使用,(和JAVA中使用Derby)
首先是Java环境变量要配置: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Fil ...
- Ubuntu 12.04 (10) Personal Environment - @staticor
Chinese Input ================= I use Wubu, so Fcitx, sudo add-apt-repository ppa:fcitx-team/nightly ...
- UVA1452|LA4727-----Jump------经典的约瑟夫公式的变形(DP)
本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...
- aliyun 主机Nginx 上配置Drupal 伪静态
网上找了好久没有正确的,后面直接在http://wiki.nginx.org/Drupal 上找到原文.但原文中复制过来会出现个 'root' rewrite directive is duplica ...