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 ...
随机推荐
- CentOS6.5下VNC Server远程桌面配置详解
参考文献: (总结)CentOS Linux下VNC Server远程桌面配置详解 远程桌面连接工具VNC——license Key 我的下载地址为 太平洋下载 VNC连接黑屏的问题 centos 6 ...
- 一种SpringMVC调用Javascript的方法
在spring的controller里面,一般是进行业务逻辑的处理,组织数据模型,然后选择适当的显示模版进行展示,这种情况下,我们可以事先做一个js的模版,然后controller根据不同的参数调用此 ...
- python 拼写检查代码(怎样写一个拼写检查器)
原文:http://norvig.com/spell-correct.html 翻译:http://blog.youxu.info/spell-correct.html 怎样写一个拼写检查器 Pete ...
- 基于visual Studio2013解决算法导论之017查找第n小元素
题目 查找第n小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...
- 基于visual Studio2013解决C语言竞赛题之0517矩阵
题目
- visual c++ 2010安装未成功
可能是已经安装了其他版本的Microsoft visual studio 参考: http://answers.microsoft.com/zh-hans/windows/forum/windows_ ...
- IO操作之使用zip包压缩和解压缩文件
转自:http://www.cdtarena.com/java.htmlJava API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使 ...
- Xcode的Hello World(简单易懂)
http://www.cocoachina.com/industry/20131121/7392.html http://objccn.io/issue-6-3/
- 操作VCF卡片信息的第三方jar包:ez-vcard
ez-vcard https://github.com/mangstadt/ez-vcard 目前最新的版本已经更新到0.9.8 起初使用该jar包的时候,是0.9.3,当时遇到一个很尴尬的问题, 就 ...
- Python调用C库
Python调用C库 Python可以利用ctypes库很方便地调用C的库函数. C库例程: # file: a.c int sum(int a, int b){ int t = 0; int ...