我需要在C#中检查文件是否已经复制完成。有没有像iscopycompleted这样的事件?我需要在不打开文件的情况下进行检查。许多示例都是通过打开文件来进行的。
文件属性何时创建?在复制过程中,文件的属性是什么?有没有办法使用文件属性来检查文件是否正在复制?
我已经使用以下代码进行了检查。
FileAttribute atr=File.getAttribute("FilePath");
在复制完成后,我得到的文件属性为存档。
我需要在C#中检查文件是否已经复制完成。有没有像iscopycompleted这样的事件?我需要在不打开文件的情况下进行检查。许多示例都是通过打开文件来进行的。
文件属性何时创建?在复制过程中,文件的属性是什么?有没有办法使用文件属性来检查文件是否正在复制?
我已经使用以下代码进行了检查。
FileAttribute atr=File.getAttribute("FilePath");
在复制完成后,我得到的文件属性为存档。
long length1 = new System.IO.FileInfo("fromFile").Length;
//code for moving file here
long length2;
do{
length2 = new System.IO.FileInfo("toFile").Length;
} while (length1!=length2);
private bool CheckFileHasCopied(string FilePath)
{
try
{
if (File.Exists(FilePath))
using (File.OpenRead(FilePath))
{
return true;
}
else
return false;
}
catch (Exception)
{
Thread.Sleep(100);
return CheckFileHasCopied(FilePath);
}
}
这就是你要找的,只需控制 FileSystemWatcher 创建事件:
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
{
bool flag = true;
while(flag)
{
try
{
File.Move(e.FullPath, @"C:\NewLocation\" + e.Name);
flag = false;
}
catch { }
}
}
//Store the location of your destination folder here with FileName
string Destination = "Destination_Location/"+FileName;
//Now get the entire Destination Address with FileName using Server.MapPath
string FullPath = Server.MapPath(Destination );
//Now you can use File.Exists condition to check whether file is present in your Destination location or not
if (File.Exists(FullPath))
{
//File copy is completed
}
else
{
//File not present
}
FileSystemWatcher
类。它会在文件目录发生更改时引发事件。 - Amit Kumar Ghosh