精华内容
下载资源
问答
  • 2019-11-02 08:54:25

       

    HANDLE Handle;

    Handle = CreateFile(szPath, GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

    if(INVALID_HANDLE_VALUE == Handle)

    {

    AfxMessageBox("文件被占用");

    return;

    }

    CloseHandle(Handle) ;//不关闭的话文件就被上面的createfile占用了

    //相同程序有用,不同程序,就没用

    更多相关内容
  • Delphi 判断文件是否被占用,这个在删除的时候,可以添加上此功能,因为文件占用的话,用户删除时会出错,用本代码可以先判断一下文件是否被占用,用弹窗方式告诉用户是否可以删除,如果没有被占用,则程序进行下...
  • C# 判断文件是否被占用 public bool IsOccupied(string fileFullNmae)
  • C++判断文件是否被占用

    千次阅读 2022-03-14 17:33:37
    /* * text.cpp * * Created on: Mar 14, 2022 * Author: lu */ #include <iostream> #include <... * 如果没输出(或者退出状态非0) 表示filename没在操作 */ static int get_file_state(st.
    /*
     * text.cpp
     *
     *  Created on: Mar 14, 2022
     *      Author: lu
     */
    
    #include <iostream>
    #include <stdio.h>
    
    /*
     * lsof | grep filename
     * 如果有输出(或者退出状态$?=0) 表示filename正在被操作
     * 如果没输出(或者退出状态非0) 表示filename没在被操作
     */
    
    static int get_file_state(std::string &filename)  //
    {
        char buf[10240] = {0};
        FILE *pf = NULL;
    
        std::string str_cmd = "lsof | grep " + filename;
    
        if( (pf = popen(str_cmd.c_str(), "r")) == NULL )
        {
            return -1;
        }
    
        std::string str_result;
        while(fgets(buf, sizeof buf, pf))
        {
            str_result += buf;
        }
    
        pclose(pf);
    
        unsigned int isize =  str_result.size();
        if(isize > 0 && str_result[isize - 1] == '\n')  // linux
        {
            str_result = str_result.substr(0, isize - 1);
        }
    
        if(str_result.find(filename) == std::string::npos )//不存在。
        {
        	return 0;
        }
    	return -1;
    }
    
    int main()
    {
    	int err=0;
    	std::string haha = "./haha";
    	err = get_file_state(haha);
    	if(err)
    	{
    		printf("file is busy\n");
    	}
    	return 0;
    }

    展开全文
  • C#判断文件是否被占用

    千次阅读 2021-04-12 16:05:43
    在C#中判断文件是否被占用一般有两种方法,一是利用FileStream结合try...catch...finally实现,二是调用Windows API实现,下面给出两种方法的代码。 2、文件流法 using System; using System.Collections.Generic; ...

    1、前言

    C#中判断文件是否被占用一般有两种方法,一是利用FileStream结合try...catch...finally实现,二是调用Windows API实现,下面给出两种方法的代码。

    2、文件流法

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp3
    {
        class Program
        {
            static void Main(string[] args)
            {
                string filePath = @"D:\data.xlsx";
                bool occupied = IsOccupied(filePath);
                if (occupied)
                {
                    Console.WriteLine("文件被占用");
                }
                else
                {
                    Console.WriteLine("文件未被占用");
                }
                Console.ReadKey(true);
            }
    
            static bool IsOccupied(string filePath)
            {
                FileStream stream = null;
                try
                {
                    stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None);
                    return false;
                }
                catch
                {
                    return true;
                }
                finally
                {
                    if (stream != null)
                    {
                        stream.Close();
                    }
                }
            }
        }
    }
    

    3、Windows API法

    using System;
    using System.Runtime.InteropServices;
    
    namespace ConsoleApp3
    {
        class Program
        {
            // 判断文件是否打开
            [DllImport("kernel32.dll")]
            public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
    
            // 关闭文件句柄
            [DllImport("kernel32.dll")]
            public static extern bool CloseHandle(IntPtr hObject);
    
            // 常量
            public const int OF_READWRITE = 2;
            public const int OF_SHARE_DENY_NONE = 0x40;
            public static readonly IntPtr HFILE_ERROR = new IntPtr(-1);
    
            static void Main(string[] args)
            {
                string filePath = @"D:\data.xlsx";
                bool occupied = IsOccupied(filePath);
                if (occupied)
                {
                    Console.WriteLine("文件被占用");
                }
                else
                {
                    Console.WriteLine("文件未被占用");
                }
                Console.ReadKey(true);
            }
    
            static bool IsOccupied(string filePath)
            {
                IntPtr handler = _lopen(filePath, OF_READWRITE | OF_SHARE_DENY_NONE);
                CloseHandle(handler);
                return handler == HFILE_ERROR;
            }
        }
    }
    
    展开全文
  • Qt判断文件是否被占用,是否可修改

    千次阅读 2020-11-24 15:39:21
    这2个类都没有明确给出API如何判断一个文件是否被占用,是否能被修改、删除等。 网上也没有人发在Qt下如何实现的。 由于自己需要使用这个功能,没办法,只有自己想办法。想来想去,也没有好主意,只能来硬的。 实现...

    Qt操作文件的类是QFile和QFileInfo。这2个类都没有明确给出API如何判断一个文件是否被占用,是否能被修改、删除等。

    网上也没有人发在Qt下如何实现的。

    由于自己需要使用这个功能,没办法,只有自己想办法。想来想去,也没有好主意,只能来硬的。
    实现如下:

    //文件存在,且被占用,返回true
    bool GlobalFunc::isFileUsed(QString fpath)
    {
        bool isUsed = false;
    
        QString fpathx = fpath + "x";
    
        QFile file(fpath);
        bool isExist = file.exists();
        if(isExist == true)
        {
            bool isCanRename = file.rename(fpath,fpathx);
            if(isCanRename == false)
            {
                isUsed = true;
            }
            else
            {
                file.rename(fpathx,fpath);
            }
        }
        file.close();
    
        return isUsed;
    }
    

    原理:
    1、判断文件是否存在。不存在就代表可以你随便改,改成鸟都行。
    2、如果存在,直接给它改名,看是否成功。这时,如果文件被打开或者编辑,系统是不允许你改名的,如果你硬要改,会返回false。
    3、如果系统不给改,这个肯定被占用。如果给改,就返回true。那它就是你的了,把它改成鸟都行。

    另外,网上给的这个例子,经过实践,英文名称正常,带中文的文件名,它是不起作用的,使用的时候请注意下:

    #include <io.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/locking.h>
    #include <share.h>
    #include <fcntl.h>
    
    bool GlobalFunc::isFileUsed(QString fpath)
    {    
        bool isUse = false;
    
        QString wpath = QDir::toNativeSeparators(fpath);
    
        QByteArray qbyteArr;
        qbyteArr.append(wpath);
        const char *c2 = qbyteArr.data();
    
        int fh = _sopen(c2, _O_RDWR, _SH_DENYRW,_S_IREAD | _S_IWRITE );
        if(-1 == fh)
        {
            isUse = true;
        }
        else
        {
            _close(fh);
        }
    
        return isUse;
    }
    
    
    
    
    展开全文
  • 转自:... C# 判断文件是否被占用的三种方法 using System.IO; using System.Runtime.InteropServices; [DllImport("kernel32.dll")] public static extern IntPtr _lopen(string ...
  • C#实现判断文件是否被占用与解除文件占用  收藏 北风其凉   发表于 8个月前 阅读 930 收藏 2 点赞 0 评论 0   最近遇到一个问题,我在实现一个C#客户端的附件...
  • c++ windows上判断文件是否被占用

    千次阅读 2019-12-09 15:46:52
    所需头文件: #include <io.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/locking.h> #include <share.h> #include <...bool IsFileUsed(const c...
  • 我上网查了下使用C#判断文件是否被占用的方法。参考了这篇博客: http://www.cnblogs.com/MR520/archive/2012/03/20/2408782.html 我实现了一个函数: using System; using System.Collections.Generic; ...
  • 摘要:C#源码,文件操作,文件占用 C#判断文件是否正在被使用,也就是是否被占用,占用的话,如果我们此时要删除文件,会得到一个文件被其它程序占用而无法删除的提示,本程序仅是判断文件是否正在被使用中,除此之外...
  • 打开一下文件就知道有没有被占用了,占用了... /// 判断文件是否被占用,返回bool值,被占用返回True /// </summary> /// <param name="fileName">带文件名的路径,带后缀</param> /// <re...
  • 判断文件是否被占用的两种方法

    万次阅读 热门讨论 2017-05-01 09:34:21
    第一种方法:采用文件流方式;打开进行读取操作,看看是否可以;(亲自尝试,完全正确) public static bool IsFileInUse(string fileName) { bool inUse = true; FileStream fs = null; try { fs = new ...
  • 先判断一下文件是否已经被打开了(占用),如果已经被打开了,就别再去打了,可以给出你自己的提示(或根据自己的需要... C# 判断文件是否被占用的可以用下面的方法     1 2 3 4 5 6 7 8 9 10 11 12
  • MessageBox.Show("文件被占用!"); return; } CloseHandle(vHandle); MessageBox.Show("没有被占用!"); } 第二种 FileStream public static bool IsFileInUse(string fileName) { bool inUse = ...
  • 查看哪个文件正在哪个exe打开,占用
  • 如果小文件还好一点,拷贝就是一瞬间的事情,但是如果是一个大文件,比如10G的文件可能就需要花费较长时间才能完成文件数据的传输,而对文件的处理肯定得保证文件数据的完整性,这边就得提到文件是否正在传输过程中...
  • if __name__ == '__main__': test() 详解 检查文件是否能使用写的方式打开 使用winapi的CreateFile对文件进行操作,如果不报异常的话即可认为是可以打开的 注意如果文件不存在,则也返回True 注意如果文件不可写等...
  • 一、思路1、通过window的aip函数CreateFile()函数获得文件句柄2、检测在获得句柄的时候是否报错“文件被占用无法打开”3、如果没有报错返回文件句柄,说明文件没有被占用;如果报错说明文件被占用二、需importimport...
  • Java和C++判断文件是否被占用

    千次阅读 2018-12-18 14:51:44
    参考: 很多CSDN上的博客以及stackoverflow上的解决方法 Java 1. RandomAccessFile try { File file = new File("E:\\javaprojects\\file.py");... System.out.println(file.exists());...
  • MessageBox.Show("文件被占用!"); return; } CloseHandle(vHandle); MessageBox.Show("没有被占用!"); } 第二种方法: public static bool IsFileInUse(string fileName) { bool ...
  • 思想:文件打开时,给它建立一个临时文件,其他操作要打开这个文件,先检测临时文件在不,在的话就DENY掉.。实现:private void checkFile(File file, long beginTime, int timeOut) throws InterruptedException, ...
  • 怎么判断文件是否被占用

    千次阅读 2012-07-31 15:26:57
    解决方法是利用CreateFile来判断这个文件是否被被其他进程以独占的方式占用了. 也可以用来判断 文件是否上传复制完毕,文件大小、操作时间的更改等。 代码: #include using namespace std; //#include #...
  • 网上有同学是这样处理的:如果可以对其进行重命名,则没有被占用,反之,该文件被占用。 示例代码 #include <QtCore/QCoreApplication> #include <QFile> #include <QDebug> int main(int argc,...
  • 判断目标文件是否被独占,提供了相关的封装函数,可以直接拿去使用。
  • 可以试一下以下两个程序:先运行这个,让一个文件处于使用状态:import java.io.*;public class FileLocker {public static void main (String args[]) {try {File f = new File("a.txt");f.createNewFile();...
  • 判断一个文件是否正在其它的程序或进程所调用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 315,865
精华内容 126,346
关键字:

判断文件是否被占用