成功复制后如何删除文件

时间:2019-04-05 07:53:28

标签: c#

成功复制后,我试图删除文件。 我希望在复制原始文件后将其删除。

private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "All Files(*.*)|*.*";
    if (open.ShowDialog() == DialogResult.OK) 
    {
        string filename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + id.ToString()+Path.GetExtension(open.FileName);
        if (!Directory.Exists(Application.StartupPath + "\\AttachedFiles"))
        {
            Directory.CreateDirectory(Application.StartupPath + "\\AttachedFiles");
        }
        File.Copy(open.FileName, Path.Combine(Application.StartupPath + "\\AttachedFiles", filename));
        cnx.ExecuteCmd("insert into Attachement values('" + id + "','" + filename + "','" + Path.GetFileName(open.FileName) + "')");
        MessageBox.Show("attached success");
        listBox1.DataSource = cnx.SelectCmd("select * from Attachement where Accidentid='" + id + "'");
        listBox1.DisplayMember = "RealFilename";
        listBox1.ValueMember = "Filename";
    }
}

1 个答案:

答案 0 :(得分:4)

要删除文件,您可以使用

File.Delete(filePath)

但是为什么不使用单个命令来移动它呢?

File.Move(filePathSource, filePathDestination);

如果您无法删除或移动文件,则可能仍可以打开流。

这是一个有效的示例,说明如何使用OpenFileDialog以及删除和复制所选文件。

using (File.Create(@"c:\Temp\txt.txt")); // File.Create wrapped in a using() to ensure disposing the stream.

using (OpenFileDialog ofd = new OpenFileDialog())
{
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        File.Copy(ofd.FileName, ofd.FileName + "2.txt");
        File.Delete(ofd.FileName);
        File.Delete(ofd.FileName + "2.txt");
    }
}

请注意,我在using(...)周围包裹了File.Create()。这是因为它将打开流到文件,从而将其锁定。如果您删除using(...)周围的File.Create(),则删除将无法进行。

要了解为什么无法删除文件的原因,必须在代码中搜索对文件的任何访问权限。