使用文件流缓存行为
本文关键字:缓存 文件 | 更新日期: 2023-09-27 18:32:54
我相信我看到了使用
try catch finally
与文件流对象。
我正在尝试将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);
并且我已经验证了尚不存在,没有创建文件未找到异常。我相信某种缓存行为正在发生,并且想知道该怎么做才能"重置"所有内容。
我知道这不应该发生,但我真的已经验证了这一点。这就是为什么我相信以前的文件存在以某种方式缓存在我的代码中。我只是没有看到在哪里。
这个问题
在test_file.Close();
被添加到 catch
后得到了纠正,这已经在原始帖子中更新了。我已经看到未关闭的数据库游标与此类似的行为。