成功复制后,我试图删除文件。 我希望在复制原始文件后将其删除。
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";
}
}
答案 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()
,则删除将无法进行。
要了解为什么无法删除文件的原因,必须在代码中搜索对文件的任何访问权限。