如何解决C#某文件正由另一进程使用……的问题。谢谢

using System;
using System.IO;

class CopyFile{
public static void Main(){
string path1 = @"d:\copy";
string path2 = @"d:\bycopy";
string path= "file.txt";
string path3 = Path.Combine(path1,path);
string path4 = Path.Combine(path2,path);

FileStream fs = File.Create(path3);
File.Copy(path3,path4);
Console.WriteLine("The file is successful of copy!");
}
}

未处理的异常: System.IO.IOException: 文件“d:\copy\file.txt”正由另一进程使用,
因此该进程无法访问该文件。
如果去了FileStream fs = File.Create(path3);
,那请问如何创建文件“d:\copy\file.txt”啊?呵呵

在FileStream fs = File.Create(path3);
后面加一句,
fs.Close();

由于调用File.Create(path3);使得文件“d:\copy\file.txt”被使用而锁定,而fs.Close();则会释放该文件,使得拷贝可以执行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-20
写文件话:
public static void Main()
{
string path = @"c:\temp\MyTest.txt";

// Delete the file if it exists.
if (File.Exists(path))
{
File.Delete(path);
}

//Create the file.
using (FileStream fs = File.Create(path))
{
AddText(fs, "This is some text");
AddText(fs, "This is some more text,");
AddText(fs, "\r\nand this is on a new line");
AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

for (int i=1;i < 120;i++)
{
AddText(fs, Convert.ToChar(i).ToString());

}
}

//Open the stream and read it back.
using (FileStream fs = File.OpenRead(path))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}
}

private static void AddText(FileStream fs, string value)
{
byte[] info = new UTF8Encoding(true).GetBytes(value);
fs.Write(info, 0, info.Length);
}
}本回答被提问者采纳
第2个回答  2010-01-19
FileStream fs = File.Create(path3);
将这句去掉或注释掉
第3个回答  2010-01-19
FileStream fs = File.Create(path3);
fs.Close();
File.Copy(path3,path4);
Console.WriteLine("The file is successful of copy!");
第4个回答  2010-01-19
FileStream fs = File.Create(path3);
这一条语句去了。

如何解决C#某文件正由另一进程使用……的问题。谢谢
在FileStream fs = File.Create(path3);后面加一句,fs.Close();由于调用File.Create(path3);使得文件“d:\\copy\\file.txt”被使用而锁定,而fs.Close();则会释放该文件,使得拷贝可以执行。

C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
首先,你需要创建一个新的控制台应用程序。在这个程序中,你需要导入System.Diagnostics命名空间,因为其中包含了与进程管理相关的方法。接着,引入Process类,这是diagnostics命名空间中的一个重要组件。通过调用Process类的GetProcesses方法,你可以获取到系统中所有运行的进程,并将其存储在一个数组中。当你...

C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
1、首先新建一个控制台程序。2、然后导入进程相关的操作类,主要是diagnostics。3、然后调用Process类的GetProcesses方法,获取系统所以进程,注意是一个数组。4、来看一下Process的相关解释说明,把鼠标放上去,看到如下图所示的内容。5、接下来遍历进程数组,循环打印在控制台上。6、最后运行程序就会看到如...

C# 另一个进程正在使用它,怎么才能找到正在使用它的这个进程呢
1、有可能是你自己当前的C#程序代码中调用这个文件结束后,没有及时关闭这个文件的流操作,导致下次调用时,系统会判断到你这个文件没有被关闭,一直处于打开读取状态,就会报这个错误,最好的解决办法是,文件IO读取结束后,及时关闭文件流。2、也可能是你这个文件本身就是只读的 3、如果你这个程序已经发...

C# 文件xxxxx 正由另一进程使用,因此该进程无法访问该文件!!!
你这样的写法是有问题的,应该将善后操作放到finnaly块中,在你得这个程序中,如果在Sw.Close();语句执行以前程序抛出了一场,那么streamwriter和filestream是不能够正常关闭的,这样,当下一次执行这个方法的时候,就会出现无法访问文件的问题。try {...} catch {...} finnaly { sw.close();sw....

C#中txt文本正由另一进程使用,因此该进程无法访问该文件。
这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,因此需要使用 System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);设置文件共享方式为读写,FileShare....

c# 如何删除正被另一个程序正在使用的文件
删除不了。如果另一个程序是你可以控制的,你可以用文件流读取!读完后,流关闭,就可以删除文件了。

C# 文件“c:\\config.txt”正在由另一进程使用,因此无法访问该文件
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);你这样又读又写的。。所以提示被占用!你的逻辑有问题,为什么要读写同一个文件,你这样做没意义。去掉 System.IO.StreamReader sr = new System.IO.StreamReader(filename);直接将内容写到文件末尾,还读...

c# 移动文件 正由另一进程使用,因此该进程无法访问该文件。
这是个IOException 因为文件同时在操作,如果你是多线程程序的话。例:object locker = new object();\/\/每个线程操作时,请先加锁 lock(locker){ }

调试时异常:文件“**”正由另一进程使用,因此该进程无法访问该...
把文件关闭。可能是你打开一个文件或是你程序后台打开一个文件,但是没有关闭这个进程。导致的写错误。最好是用任务管理器结束你的之前可能打开文件的进程,

相似回答