精华内容
下载资源
问答
  • 【C#】判断一个文件是否被打开

    千次阅读 2019-05-27 11:15:46
    /// 文件是否被打开 /// /// <param name="path"></param> /// <returns></returns> public static bool IsFileOpen(string path) { if (!File.Exists(path)) { return false; } IntPtr vHandle = _lopen(path...

     

    [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);
    
    /// <summary>
    /// 文件是否被打开
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static bool IsFileOpen(string path)
    {
        if (!File.Exists(path))
        {
            return false;
        }
        IntPtr vHandle = _lopen(path, OF_READWRITE | OF_SHARE_DENY_NONE);//windows Api上面有定义扩展方法
        if (vHandle == HFILE_ERROR)
        {
            return true; 
        }
        CloseHandle(vHandle);
        return false; 
    }

     

    展开全文
  • _get_all_pid(self): """获取当前所有进程""" return [ _i for _i in os.listdir('/proc') if _i.isdigit()] def __get_all_fd(self): """获取所有已经打开文件的fd路径""" all_fd = [] for pid in self.__get_all...

    请问你的是linux吗?如果是linux可以借助/proc来获取。

    import os

    class File(object):

    def __init__(self, file_path):

    if not os.path.exists(file_path):

    raise OSError('{file_path} not exist'.format(file_path = file_path))

    self.file_path = os.path.abspath(file_path)

    def status(self):

    open_fd_list = self.__get_all_fd()

    open_count = len(open_fd_list)

    is_opened = False

    if open_count > 0:

    is_opened = True

    return {'is_opened': is_opened, 'open_count': open_count}

    def __get_all_pid(self):

    """获取当前所有进程"""

    return [ _i for _i in os.listdir('/proc') if _i.isdigit()]

    def __get_all_fd(self):

    """获取所有已经打开该文件的fd路径"""

    all_fd = []

    for pid in self.__get_all_pid():

    _fd_dir = '/proc/{pid}/fd'.format(pid = pid)

    if os.access(_fd_dir, os.R_OK) == False:

    continue

    for fd in os.listdir(_fd_dir):

    fd_path = os.path.join(_fd_dir, fd)

    if os.path.exists(fd_path) and os.readlink(fd_path) == self.file_path:

    all_fd.append(fd_path)

    return all_fd

    if __name__ == "__main__":

    _file = File('/tmp/a.txt')

    print(_file.status())

    展开全文
  • 判断文件是否被打开

    2014-11-25 20:50:20
    判断文件是否被打开 方法:通过try catch对文件的移动操作,如果文件打开,将不能移动,会进入catch段代码,通过返回bool值来反应是否能正常移动  private void button2_Click(object sender, EventArgs e) {...
    

    判断文件是否被打开

    方法一:通过try  catch对文件的移动操作,如果文件打开,将不能移动,会进入catch段代码,通过返回bool值来反应是否能正常移动
     

    private void button2_Click(object sender, EventArgs e)
            {
                string filePath = "Test.docx";
                bool bl = isOpen(filePath);
            }
    private static bool isOpen(string filePath)
            {
                try
                {
                    //第一个 移动文件
                    File.Move(filePath, filePath);
                    //第二个 读写
                    Stream stream = File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
                    return true;
                }
                catch(Exception e)
                {
                    return false;
                }
            }

     

    方法二:_lopen(FileN,OF_READWRITE|OF_SHARE_DENY_NONE)检测返回值
     

     

            [DllImport("kernel32.dll")]
            public static extern IntPtr _lopen(string filePath,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 readonly IntPtr HFILE_ERROR = new IntPtr(-1);
    
            private void button3_Click(object sender, EventArgs e)
            {
                string filePath = "Test.docx";
                IntPtr vHandle = _lopen(filePath,OF_READWRITE|OF_SHARE_DENY_NONE);
                if (vHandle == HFILE_ERROR)
                {
                    MessageBox.Show("被占用!");
                    return;
                }
                CloseHandle(vHandle);
                MessageBox.Show("未被占用!");
                
            }

    其中,对应txt文件,当txt文件被记事本打开后,程序不会锁定,对于除txt文件的其他文件,上面的方法都可以正常实现。

    我们可以通过对process进程的循环遍历来判断文件是否被notepad打开。

            private void button5_Click(object sender, EventArgs e)
            {
                string fileName="Test.txt";
                Process[] processes = Process.GetProcessesByName("notepad");
                foreach (Process process in processes)
                {
                    if (process.MainWindowTitle.Equals(fileName+" - Notepad"))
                    {
                        MessageBox.Show("被占用");
                        return;
                    }                
                }
            }
    

    展开全文
  • m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile与CFile::hFileNull的比较来判断文件是否已经打开。 示例代码: 1 CString strFilename = _T("D:\\大学语文.docx"); 2 CFile file; 3 file.Open...

    方法一:

    CFile类的成员变量:

    m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile 与 CFile::hFileNull的比较来判断该文件是否已经打开。

    示例代码:

     1     CString strFilename = _T("D:\\大学语文.docx");
     2     CFile file;
     3     file.Open(strFilename,CFile::modeReadWrite);//
     4     
     6     if (file.m_hFile != CFile::hFileNull)
     7     {
     8         file.Close();
     9     }
    10     else
    11     {
    12         printf("File Already Close \n");
    13     }

    方法二:

    利用file.GetFileName().IsEmpty()来判断
     

    示例代码

     1     CString strFilename = _T("D:\\大学语文.docx");
     2     CFile file;
     3     file.Open(strFilename,CFile::modeReadWrite);//
     4     
     5     if (!file.GetFileName().IsEmpty())
     6     {
     7         file.Close();
     8     }
     9     else
    10     {
    11         printf("File Already Close \n");
    12     }

    方法三:

    通过设置成员变量来记录文件是否被打开。如BOOL bIsFileOpen;默认是FALSE,

    打开成功,把它置为TRUE;否则置为FALSE;

    然后在程序里面判断就可以了。关闭后置bIsFileOpen为FALSE,

    展开全文
  • import java.io.File; public class Test { ...// 获取本工程下文件 static File file2 = new File(System.getProperty("user.dir") + "//Test.txt"); public static boolean isOpened()
  • 如何用Python判断一个文件是否被占用?

    万次阅读 多人点赞 2020-12-15 11:17:46
    今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为access()返回的是文件的读写属性。后来,群里有同学建议说,不妨用try尝试着open文件,如果成功,表示文件没有占用,...
  • C#判断文件是否被打开占用

    千次阅读 2013-08-06 15:59:52
    对于应用程序,有时候可能需要判断某个文件是否已经被打开,也就是指是否被某个流连接着。这在对文件的读写比较频繁的程序中尤为重要,因为一个文件同一时刻只能有一个流连接的。下面的代码也许能有所帮助。 using ...
  • 一个PDF文件 当双击打开这个pdf文件时,如何判断哪个程序打开的? 比如电脑里有Adobe reader,有福昕,有wps...现在希望这个PDF只wps打开,当使用其他文件打开的时候出现提示。 请问这个该如何实现? 谢谢!
  • 如何判断一个文件是否被关闭?

    千次阅读 2012-06-16 21:59:23
    做项目的时候遇到了下面这个问题:如何判断一个打开的txt文件是否被关闭? 在打开一个txt文件的时候,notepad程序是自动通过文件路径的参数首先复制文件,然后马上就关闭了文件通道,这个时候打开的其实只是notepad...
  • 判断excel文件是否被打开

    千次阅读 2010-01-02 09:46:00
     ' 判断文件是否在使用中   Public Function IsFileAlreadyOpen()Function IsFileAlreadyOpen(ByVal FileName As String) As Boolean  Dim hFile As Long  Dim lastErr As Long  hFile = -1 ' 初始化文件...
  • 方法一:CFile类的成员变量:m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile与CFile::hFileNull的比较来判断文件是否已经打开。示例代码:CStringstrFilename=_T("D:\\大学语文.docx"); CFilefile; ...
  • 最近做一个课题,要求winform客户端能保存接收到的实验数据到文件(如.txt文件),并能打开保存好了的实验数据文档,当数据文件已经被打开,要提示文件已被打开,也就是如何判断文件是否处于打开状态,然后给出相应...
  • //获取文件夹下所有文件 File file = new File(localDirectory); //将获得的文件转换成数组 File[] array = file.listFiles(); List list = new ArrayList(); for(File tempFile : array)
  • 请教各位大佬,想通过C++程序向EXCEL文件写入数据,但这个文件打开了就写不进去了,请问如何判断文件是否已经打开?
  • 判断文件是否被打开(word)

    千次阅读 2007-08-24 17:37:00
    这根本不是个值得讨论的话题,它太简单了,只要一个F1,msdn上会给你一个详细的...//判断文件是否打开 isopen=docFile.Open(strFileName,CFile::modeCreate|CFile::modeWrite); if (isopen==0) { MessageBox(filenam
  • 打开一下文件就知道有没有占用了,占用了... /// 判断文件是否被占用,返回bool值,占用返回True /// </summary> /// <param name="fileName">带文件名的路径,带后缀</param> /// <re...
  • 使用python判断excel文件是否打开

    千次阅读 2019-11-07 00:33:44
    这次时间赶就不搞些花里胡哨的排版了。。事情能是这样的,最近写...但是使用python操作excel还是头一次, google了半天也没有发现网上有这这种如何判断一个Excel文件是否打开的方法,后来还是自己手动码出来,这里...
  • C# 判断一个文件是否正在使用。

    千次阅读 2011-07-19 11:35:45
    转自:http://www.cnblogs.com/gooliugle/archive/2010/04/27/1722240.html/// /// 判断一个文件是否正在使用函数 /// /// 将要判断文件的文件名 /// bool public static
  • Linux C 库函数判断一个文件是否为空

    千次阅读 2016-07-21 18:48:30
    这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。 EOF其实就是一个宏:#define EOF (-1) 表示-1. 既然返回的是一个字节,为什么返回值确用4字节的int表示,不用unsigned char这1个字节类型...
  • VC怎样判断一个文件存在

    千次阅读 2016-07-20 11:29:28
    用到最多的还是文件打开,文件读写,判断文件存在否.本文不讨论文件读写,只针对判断文件存在否. 记得在C#里,有一个东西,叫做CFile.通过它的方法CFile.Exit(Filename)就可以直接判断文件是否存在,可是在VC里没有这个...
  • linux下判断一个文件是否正在使用

    千次阅读 2013-12-31 17:15:35
     * 判断某个文件是否正在使用中  * 返回值  * -1 表示时出错  * 0 表示文件没有在使用中  * 1 表示文件正在使用中  */ int Lsof(char *strFileSubPath) //其中strFileSubPath包括文件名 {  ...
  • 判断一个文件是否为二进制文件

    千次阅读 2016-08-10 18:06:06
    判断一个文件是否为二进制文件 public static boolean isBinary(File file) { boolean isBinary = false; try { FileInputStream fin = new FileInputStream(file); long len = file.length(); for ...
  • VB判断指定的Excel文件是否打开

    千次阅读 2016-06-16 15:39:15
    程序要求:判断一个Excel文件是否打开。实现方法:窗体布局如下:代码如下:'先引用 Microsoft Excel 11.0 Object Library(Excel2003) 后再声明:Dim xlApp As New Excel.ApplicationDim xlBook As New Excel....
  • C#判断已经被打开过的excel文件

    千次阅读 2017-12-24 23:41:49
    C#判断已经被打开过的excel文件
  • C# 判断(Excel)文件是否已经打开 using System.IO; using System.Runtime.InteropServices; [DllImport("kernel32.dll")] public static extern IntPtr...
  • Python 技术篇-判断指定路径下的文件是否处于打开状态或占用状态实例演示。 说明: 如果是打开状态,会报如下错误:PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Administrator\\Deskto p\\接口用例...
  • 文件操作中难免遇到磁盘访问冲突的问题,如何判断一个文件是否被占用呢?请大家给点可行的办法。 说明:网上盛传的办法 1、try{File.Move(FileName,FileName);} 2、_lopen(FileN, OF_READWRITE | OF_SHARE_DENY...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 583,914
精华内容 233,565
关键字:

如何判断一个文件是否被打开