单击按钮并且第一次执行代码时,button1_Click事件(将PDF复制到新位置)工作正常;
但是,再次单击该按钮(使用相同的文本框条目)时,会引发以下错误:
System.UnauthorizedAuthorizedAccessException:访问路径“\ share \ drive ....
显然,在给定相同的文本框条目的情况下,我不希望它能够在会话期间执行两次。在我解决这个问题之前,我想解决这个异常错误。我错误地把路径打开了吗?
代码已更新以显示解决方案:
public static string Case_No;
namespace CEB_Process
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//===============================
// TEXT BOX ENTRY
//===============================
private void textBox1_TextChanged(object sender, EventArgs e)
{
Form1.Case_No = textBox1.Text;
}
//==============================
// CHECK if Direcotry Exists
//==============================
public void CreateIfMissing(string path)
{
if (!Directory.Exists(path))
{
DirectoryInfo di = Directory.CreateDirectory(path);
//Added
var permissions = new DirectoryInfo(path);
permissions.Attributes &= ~FileAttributes.ReadOnly;
MessageBox.Show("The directory was created successfully");
}
}
//=================================
// MOVE Violation PDF's Button Click
//==================================
private void button1_Click(object sender, EventArgs e)
{
//Declare Source path directory from text box entry
string sourcePath = string.Format(@"\\share\drive\etc{0}", Case_No);
string targetPath = string.Format(@"\\share\drive\etc{0}", Case_No);
try
{
//Call Method to Check/Create Path
CreateIfMissing(targetPath);
//Get TRAKiT Violation PDF's from source
foreach (var sourceFilePath in Directory.GetFiles(sourcePath, "*.pdf"))
{
string fileName = Path.GetFileName(sourceFilePath);
string destinationFilePath = Path.Combine(targetPath, fileName);
System.IO.File.Copy(sourceFilePath, destinationFilePath, true);
File.SetAttributes(destinationFilePath, FileAttributes.Normal);
}//End For Each Loop
MessageBox.Show("Files Copied Successfully!");
}//end try
catch (Exception x)
{
MessageBox.Show("The process failed", x.ToString());
}
}//End Button Module
}//End Namespace
}//End Class
答案 0 :(得分:0)
答案 1 :(得分:0)
我认为您在不覆盖所选文件的情况下使用File.Copy
。
这意味着该文件正在被复制,并且它暂时被操作系统锁定,然后它无法进行修改(只读)。这就是 UnauthorizedAccessException 的原因。
检查您是否可以先访问文件。