删除指定文件。
object.DeleteFile ( filespec[, force] );
参数
object
必选项。 应为 FileSystemObject 的名称。
filespec
必选项。 要删除的文件的名称。 filespec 可以在最后的路径成分中包含通配字符。
force
可选项。 Boolean 值,如果要删除设置了只读属性的文件,则为 true ;如果不删除则为 false (默认)。
说明
如果找不到匹配的文件则出错。 DeleteFile 方法在遇到第一个错误时终止。 出错后不试图回滚或撤消出错前做的修改。
如果成功返回一个非0值
失败返回0 可以用GetLastError函数得到错误信息
下面的例子说明了 DeleteFile 方法的用法。
function DeleteFile(filespec)
{
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile(filespec);
}
我用DeleteFile(spath)去删除一个文件时,竟然没有删除掉.(其中CString spath,spath是一个带有文件名的路径).在CSDN上查了一下发现是EXCEL进程没有关闭.(我做的是EXCEL导入和导出)
程序的过程是:
在导出一张EXCEL表时,会弹出一个另存为的路径选择窗口,可以给要导出的文件命一个名字,如果该名字在所选择的路径下存在了,则提示是否覆盖,要是覆盖则删除该文件,并重新创建一个相同的该文件,否则则获取定义的新的路径+文件名.
如果我已打开了一个文件(该文件的进程存在,而文件本身已经关闭了),在后续的覆盖中,也选择了该文件,就会出现无法删除该文件的情况,必须把该文件的进程关闭.
但是如何获取错误信息呢?
解决方法如下:方法一、
由于DeleteFile()函数是一个BOOL型的,如果删除成功的话,返回非零(即 1 ),否则则返回0.
所以应在返回值为0时,获取错误信息,方法是:
LPVOID lpMsgBuf;
if (!FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL ))
{
// Handle the error.
return;
}
// Process any inserts in lpMsgBuf.
// …
// Display the string.
MessageBox( (LPCTSTR)lpMsgBuf, “Error”, MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
方法二
VC有个小工具的。输入错误码,就可以看到原因了。
Tools->Error Lookup
如何获取错误码:
DWORD dwerr = GetLastError();
如果dwerr==0的话,则成功.否则有错误.
在调试的时候将dwerr的值输入到Error Lookup,(并非只是在调试的时候用,只要知道错误码
什么时候都可以查看错误信息)
例如,在value中输入32,则error为”另一个程序正在使用此文件,进程无法访问。”