使用FileStream缓存行为

时间:2014-12-03 15:17:53

标签: c# file caching

我相信我正在看到"缓存行为"使用

try catch finally

使用FileStream对象。

我正在尝试将PictureBox图像保存到网络文件路径中,如下所示:

\\img_srv\permitimages\2014\Building\4454-1.tif

以下是执行保存和递增文件名的代码:

public void save_file_name()
{
    gen_full_yr_image_path();
    string image_path = get_full_yr_image_path();
    bool does_file_exist = true;
    FileStream test_file = null;

    while (does_file_exist)
    {
        try
        {
            test_file = new FileStream(image_path, FileMode.Open, FileAccess.Read);
            test_file.Close();
            test_file.Dispose();
            test_file = null;

            gen_image_file_name();
            gen_full_yr_image_path();
            image_path = get_full_yr_image_path();
        }

        catch
        {
            does_file_exist = false;
            test_file = new FileStream(image_path, FileMode.CreateNew, FileAccess.Write);
            test_file.Close();
            test_file.Dispose();
            test_file = null;
            m_scanned_pic.Image.Save(image_path, System.Drawing.Imaging.ImageFormat.Tiff);
        }

        finally
        {
            if (null != test_file)
            {
               test_file.Close();
               test_file.Dispose();
            }
        }
    }
}

我所看到的行为如下:

如果\\img_srv\permitimages\2014\Building\4454-1.tif 不存在 ,则尝试打开该文件会导致异常。这是预期的行为。

但是,如果\\img_srv\permitimages\2014\Building\4454-1.tif 确实存在 ,则下一个增量文件名

\\img_srv\permitimages\2014\Building\4454-2.tif

后创建

test_file = new FileStream(image_path, FileMode.Open, FileAccess.Read);

我已验证的内容尚未存在,未创建文件未找到异常。我相信某种缓存行为正在发生,并且我想知道如何处理"重置"一切。

我知道这不应该发生,但我确实已经证实了这一点。这就是为什么我相信现有文件的存在以某种方式缓存在我的代码中。我只是没有看到。

1 个答案:

答案 0 :(得分:1)

test_file.Close();添加到原始帖子中已更新的catch后,此问题已得到纠正。我已经看到了与未关闭的数据库游标类似的行为。