是否可以使用c#复制pst文件并打开outlook?
这是我已经获得的代码,但它仍然给我错误:进程无法访问文件'filepath',因为它正被另一个进程使用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace outlookPSTCopy
{
class Program
{
static void Main(string[] args)
{
string done = "the file is done copying";//done massage
string copyFrom = args[0];
string copyTo = args[1];
Console.WriteLine(copyTo);
Console.ReadLine();
try
{
//start of test
using (var inputFile = File.Open(copyFrom, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
using (var outputFile = new FileStream(copyTo, FileMode.Create))
{
var buffer = new byte[0x10000];
int bytes;
while ((bytes = inputFile.Read(buffer, 0, buffer.Length)) > 0)
{
outputFile.Write(buffer, 0, bytes);
}
}
}
//end of test
//System.IO.File.Copy(copyFrom, copyTo, true);
}
catch (Exception copyError)
{
Console.WriteLine("{0} Second exception caught.", copyError);
}
Console.WriteLine("{0} ", done);
Console.ReadLine();
}
}
}
感谢您的帮助!
答案 0 :(得分:1)
要创建在Windows上被其他进程锁定的文件的副本,最简单(也可能是唯一)的解决方案是使用卷影复制服务(VSS)。
卷影复制服务很复杂,很难从托管代码调用。幸运的是,一些优秀的人员已经创建了一个.NET类库来实现这一目标。查看CodePlex上的 Alpha VSS 项目:http://alphavss.codeplex.com。