如何检查文件是否已存在?

时间:2012-07-24 00:01:03

标签: c#

public void SaveFormPicutreBoxToBitMapIncludingDrawings()
{
    using (Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height))
    {
        pictureBox1.DrawToBitmap(b, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
        string fn = @"d:\PictureBoxToBitmap\" + PbToBitmap.ToString("D6") + ".bmp";
        if (File.Exists(fn))
        {
        }
        else
        {
            b.Save(@"d:\PictureBoxToBitmap\" + PbToBitmap.ToString("D6") + ".bmp"); // to fix/repair give gdi error exception.
            PbToBitmap++;
        }
    } 
}

如果我将trackBar向右移动,它将保存第一个文件000000.bmp,然后在下次保存文件000001.bmp时将其提高一个

但是如果我现在向左移动一次,变量fn就是000002.bmp,它将存在并且它将保存前一个图像,它真的是000001.bmp。

当我向左移动它时它应该做的假设应该是000001.bmp看到它存在并且什么都不做。

如果不进行此检查,如果我将trackBar向右或向左移动,它将一直保存文件,所以几次后我将有超过90个文件几乎全部相同。

我该如何解决?

变量PbtoBitmap是Form1顶部的int类型我刚刚用0开始。 PbToBitmap = 0;

我正在谈论的trackBar是trackBar1,在滚动事件中我调用这个SaveFormPicutreBoxToBitMapIncludingDrawings函数。

这是trackBar1滚动事件:

private void trackBar1_Scroll(object sender, EventArgs e)
{
    currentFrameIndex = trackBar1.Value;
    textBox1.Text = "Frame Number : " + trackBar1.Value;
    wireObject1.woc.Set(wireObjectAnimation1.GetFrame(currentFrameIndex)); 

    trackBar1.Minimum = 0;
    trackBar1.Maximum = fi.Length - 1;
    setpicture(trackBar1.Value);
    pictureBox1.Refresh();

    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
    button4.Enabled = false;
    button8.Enabled = false;
    SaveFormPicutreBoxToBitMapIncludingDrawings();
    return;
}

1 个答案:

答案 0 :(得分:1)

目前尚不清楚您要完成的任务,但是您正在从计数器PbToBitmap生成文件名。这个计数器只会增加而且永远不会减少,所以它当然会“只是保存文件......”。

如果您希望计数器与您所在的框架相匹配,请摆脱PbToBitmaptrackBar1_Scroll内部的呼叫:

string dir = @"d:\PictureBoxToBitmap";
SaveFormPictureBoxToBitMapIncludingDrawings(dir, currentFrameIndex);

将您的SaveFormPictureBoxToBitMapIncludingDrawings更改为:

public void SaveFormPictureBoxToBitMapIncludingDrawings(string dir, int frameIndex)
{
    string fn = Path.Combine(dir, frameIndex.ToString("D6") + ".bmp");
    if (!File.Exists(fn))
    {
        using (Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height))
        {
            pictureBox1.DrawToBitmap(b, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
            b.Save(fn);
        }
    } 
}