I have a project where I have a web form that generates a .csv file on the fly and then is encrypted using GnuPG. The encryption process works and the encrypted file is generated in the same directory. Next, after the file is encrypted, I need for the regular .csv file to be deleted.
I have used file.delete to do this but I am getting the error "The process cannot access the file 'FILEPATH/FILENAME.EXT' because it is being used by another process. I am unsure if I placed the code in the wrong area.
Can anyone suggest to me what I should do? Here is the relevant code.
public void encryptPGP(string fileName)
{
try
{
string sCommandLine = String.Format(@"-r ""CERT NAME"" -e ""{0}""", fileName);
//lblError.Text = "<pre>" + sCommandLine + "</pre>";
string userPwd = "COOLPWD";
System.Security.SecureString pwd = new System.Security.SecureString();
foreach (char c in userPwd.ToCharArray())
{
pwd.AppendChar(c);
}
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
info.Arguments = sCommandLine;
info.Domain = "DOMAINNAME";
info.FileName = "C:\\Utilities\\GnuPG\\App\\gpg.exe";
info.Password = pwd;
info.UserName = "USERNAME";
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
info.CreateNoWindow = true;
info.WorkingDirectory = "C:\\Utilities\\GnuPG\\App\\";
//writeToLog(info.FileName, "App");
//writeToLog(sCommandLine, "Args");
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = info;
proc.Start();
lblError.Text = proc.StandardOutput.ReadToEnd();
System.IO.File.Delete(fileName);
}
catch (Exception ex)
{
lblError.Text = ex.Message;
//writeToLog(ex.Message, "");
}
}
// method for writing error log
private void writeToLog(string strMessage, string strMethod)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\Log.txt", true))
{
file.WriteLine(string.Format("{0} - {1} - {2}", DateTime.Now, strMethod, strMessage));
}
}
// end method for writing error log
Also, here is the process to create the file:
string fileName = @"c:\DIR\DIR\" + pt.SelectedItem.Value + pcf + "--" + usname + "--" + sname.Text + "--" + cdt + ".csv";
string lines = DropDownList3.SelectedItem.Value + "," + DropDownList8.SelectedItem.Value + "," + DropDownList1.SelectedItem.Value + "," + TextBox25.Text + "," + ssn.Text + "," + TextBox13.Text + "," + Lastname.Text + "," + firstname.Text + "," + " " + "," + TextBox1.Text + "," + TextBox3.Text + "," + TextBox4.Text + "," + TextBox5.Text + "," + TextBox6.Text + "," + TextBox9.Text + "," + TextBox10.Text + "," + TextBox11.Text + "," + TextBox2.Text + "," + " " + "," + TextBox22.Text + "," + TextBox26.Text + "," + TextBox29.Text + "," + TextBox19.Text + "," + TextBox27.Text + "," + TextBox30.Text + "," + TextBox24.Text + "," + TextBox28.Text + "," + TextBox8.Text + "," + DropDownList7.SelectedItem.Value + "," + TextBox38.Text + " " + TextBox34.Text + "," + TextBox33.Text + "," + TextBox41.Text + "," + TextBox35.Text + "," + TextBox36.Text + "," + TextBox37.Text + "," + TextBox54.Text + "," +" "+"," + TextBox12.Text;
System.IO.File.WriteAllText(fileName, lines);
encryptPGP(fileName);