有什么好的方法判断一个文件正在被占用?

ISoCai 2004-03-24 02:29:31
有什么好的方法判断一个文件正在被应用程序占用?
这个文件的文件名我知道
...全文
238 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vollin 2004-03-24
  • 打赏
  • 举报
回复
#include "io.h"
int _access(const char* path,int mode);

Return Value

Each of these functions returns 0 if the file has the given mode. The function returns –1 if the named file does not exist or is not accessible in the given mode; in this case, errno is set as follows:


mode Value Checks File For
00 Existence only
02 Write permission
04 Read permission
06 Read and write permission


Example

/* ACCESS.C: This example uses _access to check the
* file named "ACCESS.C" to see if it exists and if
* writing is allowed.
*/

#include <io.h>
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
/* Check for existence */
if( (_access( "ACCESS.C", 0 )) != -1 )
{
printf( "File ACCESS.C exists\n" );
/* Check for write permission */
if( (_access( "ACCESS.C", 2 )) != -1 )
printf( "File ACCESS.C has write permission\n" );
}
}

coyer 2004-03-24
  • 打赏
  • 举报
回复
if(!file.Open(m_strTmpFileName,CFile::modeCreate|CFile::modeWrite,&e))
{
switch(e.m_cause)
{
case CFileException::badPath:
tmp="All or part of the path is invalid.";
break;
case CFileException::tooManyOpenFiles:
tmp="The permitted number of open files was exceeded.";
break;
case CFileException::accessDenied:
tmp="The file could not be accessed.";
break;
case CFileException::invalidFile:
tmp="There was an attempt to use an invalid file handle";
break;
case CFileException::directoryFull:
tmp="There are no more directory entries.";
break;
case CFileException::hardIO:
tmp="There was a hardware error.";
break;
case CFileException::diskFull:
tmp="The disk is full";
break;
default:
tmp="An Unknow error occured!";
}


CFileException::none No error occurred.


CFileException::generic An unspecified error occurred.


CFileException::fileNotFound The file could not be located.


CFileException::badPath All or part of the path is invalid.


CFileException::tooManyOpenFiles The permitted number of open files was exceeded.


CFileException::accessDenied The file could not be accessed.


CFileException::invalidFile There was an attempt to use an invalid file handle.


CFileException::removeCurrentDir The current working directory cannot be removed.


CFileException::directoryFull There are no more directory entries.


CFileException::badSeek There was an error trying to set the file pointer.


CFileException::hardIO There was a hardware error.


CFileException::sharingViolation SHARE.EXE was not loaded, or a shared region was locked.


CFileException::lockViolation There was an attempt to lock a region that was already locked.


CFileException::diskFull The disk is full.


CFileException::endOfFile The end of file was reached
ISoCai 2004-03-24
  • 打赏
  • 举报
回复
恩 我也是这么想的,使用MFC的 CFile::Open方法,以独占方式打开。

有别的更简单的方法吗?
快乐鹦鹉 2004-03-24
  • 打赏
  • 举报
回复
以独占方式打开文件,如果失败,可以根据失败的信息判断出是否其他程序占用

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧