System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open)
这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
因此需要使用
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);
设置文件共享方式为读写,FileShare.ReadWrite。
本文实例讲述了C#实现复制文件夹中文件到另一个文件夹的方法。分享给大家供大家参考。具体如下:
private void CopyDir(string srcPath, string aimPath)
// 检查目标目录是否以目录分割字符结束如果不是则添加
if (aimPath[aimPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
aimPath += System.IO.Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建
1.调用了窗口的 hide() 方法,导致某些窗口(尤其是登录页面)被隐藏,导致关闭的时候,这个进程在最下面的任务栏里面并不显示出来,而且在任务管理器里面也不显示。(但实际上是进程存在并且没有被关闭,只是隐藏起来了),结果这样就莫名进入了调试状态。
2.自己采用的调试状态运行程序,导致不能修改代码,尽管调试状态下可以修改代码(工具--->选项--->调试,把对号去
这是由于程序要读取的文件已经被其他进程(人为或其它程序)打开,若仅需要读取,则可以设置文件共享方式为读写的,FileShare.ReadWrite,如下方式:
System.IO.FileStream fs = new System.IO.FileStream(fileName,
System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);
注意:System.IO.FileMode.Open,System.IO.FileAc
c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件
问题描述:c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题。
文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件。
log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作。
今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流。
1、 FileStream fs = File.OpenRead(url);
StreamReader sr = ne
1.将文件流变为共享:
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(
C#中经常会使用到OpenFileDialog控件,而使用该控件时若没有将条件设置好,很容易出现以下提示:
“文件正由另一进程使用,该进程无法访问该文件”。
打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示,错误的原因很简单,解决方法也很简单。
一般情况下造成该错误的原因是构造System.IO.FileStream时参数设
二、解决办法:用共享文件即可
用以下代码替换strStartMain = File.ReadAllText(strPathTxt, Encoding.Default);即可。
FileStream fs = new FileStream(strPathTxt, FileMode.Open, FileAccess.Rea...
OpenFileDialog open_file = new OpenFileDialog();
open_file.Filter = "bat files (*.bat)|*.bat|All files (*.*)|*.*";
open_file.RestoreDir
string currentPath = Directory.GetCurrentDirectory();
//获取文件名
string fileName = "example.txt";
//获取进程名
string processName = Path.GetFileNameWithoutExtension(fileName);
//获取所有同名进程
Process[] processes = Process.GetProcessesByName(processName);
//遍历进程
foreach (Process process in processes)
//获取进程的文件路径
string processPath = process.MainModule.FileName;
//判断路径是否为当前路径下的文件
if (processPath.StartsWith(currentPath) && processPath.EndsWith(fileName))
//关闭进程
process.Kill();
catch (Exception ex)
//处理异常
Console.WriteLine(ex.Message);
这段代码会获取当前路径下的文件名和进程名,然后使用 `GetProcessesByName()` 方法获取同名的所有进程。接着遍历这些进程,获取进程的文件路径,判断路径是否为当前路径下的文件,如果是则使用 `Kill()` 方法关闭进程。注意,这种关闭进程的方式也比较暴力,可能会导致数据丢失或其他问题,所以在使用之前要谨慎考虑。