幫助!我無法弄清楚如何關閉文件。它總是給我IOException異常文件,像它正被另一個進程使用IOException文件複製未處理。從picturebox上傳圖片時
這裏是我的代碼
private void uploadpic_btn_Click(object sender, EventArgs e)
{
open_dialog = new OpenFileDialog();
open_dialog.Title = "Open picture";
open_dialog.Filter = "JPEG (*.jpg;*.jpeg;*.jpe;*.jfif)|*.jpg";
if (open_dialog.ShowDialog() != DialogResult.Cancel)
{
uploadpic_pb.BackgroundImage = Image.FromFile(open_dialog.FileName);
uploadpic_pb.BackgroundImageLayout = ImageLayout.Stretch;
uploadpic_pb.BorderStyle = BorderStyle.FixedSingle;
}
}
private void saveBTN_Click(object sender, EventArgs e)
{
string targetPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "\\Pictures");
string destFile = Path.Combine(targetPath, "Copied.jpg");
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
File.Copy(open_dialog.FileName, destFile, true);
}
private void Form1_Load(object sender, EventArgs e)
{
Image myimage = Image.FromFile(@"C:\Pictures\Copied.jpg");
uploadpic_pb.BackgroundImage = myimage;
uploadpic_pb.BackgroundImageLayout = ImageLayout.Stretch;
uploadpic_pb.BorderStyle = BorderStyle.FixedSingle;
}
異常返回
該進程無法訪問文件「C:\ Pictures \ Copied.jpg「,因爲它正在被另一個進程使用。
與代碼描述結合使用時,代碼沒什麼意義。 1)您從不以需要關閉的方式打開任何文件(Image.FromFile和File.Copy不會保留文件打開狀態)。 2)您將圖像保存到MemoryStream中,僅丟棄該流而不使用它(並保證關閉);這是毫無意義的。 3)你不知道拋出異常的地方。 – 2011-02-18 02:32:10
即使我刪除了內存流,結果仍然是一樣的。 IOException總是指向File.Copy行。 – Holyoxx 2011-02-18 02:36:59