精华内容
下载资源
问答
  • 修改文件名提示被占用
    2021-05-16 21:37:59

    背景

    公司的自研框架,使用logging模块承担日志功能。之前的做法是将所有线程和进程的日志都打印在一个文件里,且框架每次运行时都将用open函数w模式截断日志文件,保证每次运行日志的独立性。
    后面根据使用场景,需要分线程、进程打印日志,即每一个线程\进程的日志都使用不同的日志文件打印。此时open函数截断日志文件的模式已经不可用,在每次运行前,需要将之前产生的日志文件删除。
    由于框架有一个UI界面,在UI上重复运行框架,到删除日志文件的代码时,会报日志文件正在使用,无法删除。

    分析

    logging模块文件处理方式为:保持日志文件一直打开的状态,所以日志文件才被一直占用。

    解决方法

    在框架运行结束前执行:logging.shutdown()。即可关闭所有记录器,也就使得日志文件被关闭。
    logging.shutdown()
    Informs the logging system to perform an orderly shutdown by flushing and closing all handlers. This should
    be called at application exit and no further use of the logging system should be made after this call.
    When the logging module is imported, it registers this function as an exit handler (see atexit), so normally
    there’s no need to do that manually.

    更多相关内容
  • 提示该文件正在另一进程使用XXX的问题,是因为对应的文件在一直调用 ,其生成的Image对象Disponse()前都不会解除锁定,这就造成了此问题,就是在这个图形解锁前无法对图像进行操作(比如删除,修改等操作)。...

    1, 问题: C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题,是因为对应的文件在一直调用 ,其生成的Image对象被Disponse()前都不会被解除锁定,这就造成了此问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等操作)。
    解决方案:此问题可以使用下面三个方法解决问题.

    方法1:在要进行文件操作前将Image对象销毁.

    System.Drawing.Image image = System.Drawing.Image.FromFile(filePath);
    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(image);
    image.Dispose();

    方法2:就是在加载图像的时候用一种方法替代
    System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
    System.Drawing.Image bmp = new System.Drawing.Bitmap(img.Width, img.Height, img.PixelFormat);

    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);
    g.DrawImage(img, 0, 0);
    g.Flush();
    g.Dispose();
    img.Dispose();


    方法3:

    System.IO.FileStream fs = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read);

    int byteLength = (int)fs.Length;
    byte[] fileBytes = new byte[byteLength];
    fs.Read(fileBytes, 0, byteLength);

    //文件流关閉,文件解除锁定
    fs.Close();
     MemoryStream mStream = new MemoryStream(fileBytes);
    Image image = Image.FromStream(mStream);

    因为FromStream方法参数应用的流必须一直保持打开,故而代码中有一个文件流是向MemeoryStream流的转换,从而可以关闭文件流,保持MemoryStream流的打开状态。在不用mStream时关闭。
    mStream.Close();
    2,文件被占用强制删除类(没试过)
    public void WipeFile(string filename, int timesToWrite)
            {
                try
                {
                    if (File.Exists(filename))
                    {
                        //设置文件的属性为正常,这是为了防止文件是只读
                        File.SetAttributes(filename, FileAttributes.Normal);
                        //计算扇区数目
                        double sectors = Math.Ceiling(new FileInfo(filename).Length / 512.0);
                        // 创建一个同样大小的虚拟缓存
                        byte[] dummyBuffer = new byte[512];
                        // 创建一个加密随机数目生成器
                        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
                        // 打开这个文件的FileStream
                        FileStream inputStream = new FileStream(filename, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
                        for (int currentPass = 0; currentPass < timesToWrite; currentPass++)
                        {
                            // 文件流位置
                            inputStream.Position = 0;
                            //循环所有的扇区
                            for (int sectorsWritten = 0; sectorsWritten < sectors; sectorsWritten++)
                            {
                                //把垃圾数据填充到流中
                                rng.GetBytes(dummyBuffer);
                                // 写入文件流中
                                inputStream.Write(dummyBuffer, 0, dummyBuffer.Length);
                            }
                        }
                        // 清空文件
                        inputStream.SetLength(0);
                        // 关闭文件流
                        inputStream.Close();
                        // 清空原始日期需要
                        DateTime dt = new DateTime(2037, 1, 1, 0, 0, 0);
                        File.SetCreationTime(filename, dt);
                        File.SetLastAccessTime(filename, dt);
                        File.SetLastWriteTime(filename, dt);
                        // 删除文件
                        File.Delete(filename);
                    }
                }
                catch (Exception)
                {
                }
            }
    3,文件被另一进程占用
    string fileName = @" c:\aaa.doc " ; // 要检查被那个进程占用的文件
    Process tool = new Process();
    tool.StartInfo.FileName
    = " handle.exe " ;//占用文件的进程
    tool.StartInfo.Arguments
    = fileName+ " /accepteula " ;
    tool.StartInfo.UseShellExecute
    = false ;
    tool.StartInfo.RedirectStandardOutput
    = true ;
    tool.Start();          
    tool.WaitForExit();
    string outputTool = tool.StandardOutput.ReadToEnd();

    string matchPattern = @" (?<=\s+pid:\s+)\b(\d+)\b(?=\s+) " ;
    foreach (Match match in Regex.Matches(outputTool, matchPattern))
    {
        Process.GetProcessById(
    int .Parse(match.Value)).Kill();
    }

    展开全文
  • windows系统中当我们在删除某个文件或文件夹时有时会提示该文件有程序在使用不能删除,这时相当惆怅。那么可以用这个方法来找到是哪个进程在占用该文件: 1:打开任务管理器选择“性能” 2:单击下部的“资源监视...

    windows系统中当我们在删除某个文件或文件夹时有时会提示该文件有程序在使用不能被删除,这时相当惆怅。那么可以用这个方法来找到是哪个进程在占用该文件:
    1:打开任务管理器选择“性能”
    2:单击下部的“资源监视器”
    3:选择“CPU”,在下部可以看到“关联的句柄”搜索框
    4:在该搜索框中输入要删除的文件名回车
    在下面就会列出来占用该文件的进程名,右键该进程单击“结束进程”,OK,可以删除了
    测试成功,一般搜索到就能看出是哪个程序占用,自己关掉也是可以的。

    win7下:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 解决文件一直被占用 无法改名 问题

    千次阅读 2020-10-27 20:55:14
    起因:想要在一个文件夹里新建一个代码的project,但是文件夹本身是中文名,为了防止不必要的麻烦,想把文件夹改为英文名,但是却显示文件夹被占用,手动找不到占用的文件,于是我选择重启电脑。结果没想到,还是...

    起因:想要在一个文件夹里新建一个代码的project,但是文件夹本身是中文名,为了防止不必要的麻烦,想把文件夹改为英文名,但是却显示文件夹被占用,手动找不到占用的文件,于是我选择重启电脑。结果没想到,还是被占用!

    解决办法:打开任务管理器,选择资源监视器,在关联的句柄中打入 文件夹的名称 就可以搜索到占用的程序了,然后手动结束这些程序,问题解决。

    注意:explorer.exe是桌面进程,不需要结束进程

    展开全文
  • 微软提供的一个小工具“handle”,可以很方便的找到占用文件的进程信息handle下载链接 使用方法:1、打开解压包文件-》点击文件夹路径-》更改输入“cmd”回车进入命令模式 2、 handle 文件名 查找哪些程序占用该文件...
  • 当你更改了一个项目的文件名时,你再启动项目却起不来:报错Disconnected from the target VM 原因可能有以下几点: 1.端口被占用,百度解决办法有:先查询自己端口号是否被占用,cmd命令 nestat -ano | findstr ...
  • 有时候流明明已经关闭了,但是还是无法删除文件或者文件夹,提示被JVM占用等 public void download(String sourceUrl, String targetPathFile) { URL url = null; //从网络上下载一张图片 InputStream ...
  • 在建立数据库时,由于之前数据库建立的不规范,同时想更换数据库的路径,所以...报逻辑名已经使用,采用了修改逻辑名的方法: alter database 数据库名称 modify file(name=原逻辑文件名, newname=新逻辑文件名...
  • 设置端口 如果TYP默认设置的端口21被占用,表现状态如图1所示,列表中会显示“Port already in use.Choose another one”,结果是服务器无法启动,此时我们要手工重新设置TYP的端口,方法是选中图1所示窗口中的...
  • 今天很不幸,可能由于自己的疏忽,在用plsql的时候用select * from 表名 for ...就报错了,提示【记录另一个用户锁住】,所以这里提醒一下大家,最好不要用for update去修改数据,要用select A.*,A.rowid from...
  • 如何查看IP地址是否被占用

    千次阅读 2020-06-08 13:15:16
    windows键+R 快捷打开cmd命令行程序,进入命令行提示符状态,在命令行中输入“ping 你想要查看的是否被占用ip地址”回车。 2.ARP缓存法 如果仅仅通过ping方法来判断网络中计算机的存在是不太严谨的,因为防火墙或者...
  • 如何快速结束被占用的程序

    千次阅读 2020-05-23 00:14:37
    有时候,我们会遇到这样一个问题,突然有些文件或者程序打不开,也不能删除修改提示已经另个个程序占用了。例如像下面这样: 正常情况如果我们能找到打开的程序然后关闭掉它就可以,但是有时候时我们已经“非...
  • 文件名、目录名或卷标语法不正确

    千次阅读 2020-12-05 04:24:30
    展开全部Win7文件名目录名或卷标语法不正确,最近有很多用户在访问某磁盘的时候,提示无法访e68a8462616964757a686964616f31333365653239问某磁盘,且下一行提示文件名、目录名或卷标语法不正确,提示的标题是...
  • 如果不是权限问题,很有可能是缺乏相应文件。此时不推荐下载文件解决,因为不清楚来源。 这里推荐官方渠道: 命令行输入:dism /online /Disable-Feature /FeatureName:TelnetClient 在线启用Telnet服务 ...
  • 遇到这个问题挺莫名其妙的,往U盘中拷贝了一个文件夹,全是word文档(学生作业,绝无病毒),删除的时候就莫名无法删除,进入文件目录,发现一大堆乱码的文件(文件还挺大的,...1.进入命令提示符(管理员)窗口; ...
  • 根据占用磁盘空间大小排序(MB)某目录下文件和目录大小 fdisk -l :查所有分区及总容量,加/dev/sda为查硬盘a的分区) fdisk /dev/sdb :对硬盘sdb进行分区 mount /dev/sda1 /mnt :硬盘sda1挂载到/mnt目录(mount 装置...
  • 所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。   当系统中的某个文件意外地删除了,只要这个时候系统中还有进程正在访问该文件,...
  • rename.xls,列出文件目录打开rename.xls,在B列修改文件名,删除A列中不需要更改文件名在C列输入="ren "&A1&" "&B1,向下拖动到所有单元格复制C列到记事本,保存为ren.bat文件,双击执行注意的问题:...
  • 电脑不关机放一夜之后有很大概率会卡,打开任务管理器一看数十个powershell.exe在跑,并且占用了大量资源。此时用电脑听音乐都会一卡一卡的。 手动结束进程后,一切恢复正常。系统好像也没什么影响。不会蓝屏或提示...
  • 文件或文件夹需要重命名或者删除或者其他操作的时候,提示文件另外一个程序打开,无法操作的时候,可采取以下方法解决 1、句柄结束进程 打开任务管理器,CTRL+ALT+DELETE 打开--性能--打开资源监视器,...
  • 查了一下,发现应该是别人植入木马挖矿了,使用top命令看了一下CPU占用,发现有个python进程cpu占用率直接拉满,而且总是定时启动,没法直接使用kill杀死进程 使用 vim /var/log/cron 查看了一下计划任务,果然不...
  • 软件卸载了,有些文件夹就是删不掉,提示被占用,mmp,这时候你肯定想到了360文件粉碎机!mmp,我就删个文件夹还要装个360?谁不知道360是个“大毒瘤”!自己动手丰衣足食!正文这时候就想到了强大的shell命令,百度...
  • 最近在接口调试中遇到,将ftp上xxx.zip文件下载到本地磁盘,将文件解压缩后,文件无法删除的问题,不论是用java代码,亦或是直接在磁盘上进行删除,都删除不了,总是提示操作无法完成,因为文件夹已在java(TM) ...
  • Win10系统下 超级管理员账户下 修改 C盘下的中文名文件夹 以及 关于Win10 的一些坑 由于第一次在 Android studio 使用SVN 检出项目 碰到了很多坑 其中一个就是 .gradle 的路径是 中文 导致了出现 Error: java.util....
  • 使用普通用户编辑/etc中的文件前忘记sudo或su了,编辑完后提示没权限修改,怎么办,不要慌,一条命令教你不用重头再来
  • 我们通过 find + 路径 的方式查找需要批量修改的指定的文件名,比如命令中的 test.txt 文件,查找到文件后通过 find 自带的参数 exec 将结果传递给另外一条命令 sed 来进行下一步命令的处理。 find 命令中,-name ...
  • 修改注册表Profilelist里的值,重启就有权限修改C盘用户文件夹名等等等。 我只能说鬼扯!这个方法操作不当很有可能导致你的电脑产生C盘数据丢失,并且有会方方面面的问题,比如导致打不开输入框,打不开代码开发...
  • 当我们操作电脑要对一个文件进行删除的时候,很多时候都会提示你说你的文件被占用,不能够删除,这个时候我们就非常的苦恼了。 二,解决办法 方法一: 这说明这个文件打开了,我们需要将这个文件关闭掉,然后再...
  • 适用于电脑物理内存达到主板可承受极限的情况 解决内存占用虚高,即进程占用的容量远低于实际内存占用容量的问题
  • 没有占用 但可以看到excel是打开状态,但是查看到打开的excel表不在重命名文件夹里。 把所有excel表保存并关闭。刷新N次。成功改名。我猜测因为打开的excel表曾经与重命名文件夹里的excel表有过复制粘贴表内容,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,421
精华内容 22,968
热门标签
关键字:

修改文件名提示被占用