C# 位图类正在通过填充空字符更改输入文件流
我遇到了一些奇怪的问题,我真的不知道这是预期的行为还是一个bug 我只是随机创建了一个文件流,它不是图像流,而是其他一些文件流,如pdf/doc等。文件流是以可写模式打开的。碰巧我的代码的另一部分,由于某些原因,将文件流的位置设置为超出实际文件流长度的大值 然后我通过传递这个文件流调用了位图的构造函数,存储在磁盘上的实际文件被更改,文件大小变得太大。当我打开修改后的文件并进行检查时,我注意到当文件流的位置超出其长度时,Bitmap类正在填充空字符。文件大小正变得等于我设置的位置值。然后我注意到它发生在我传递的任何文件中,包括图像文件 代码如下:C# 位图类正在通过填充空字符更改输入文件流,c#,.net,winforms,C#,.net,Winforms,我遇到了一些奇怪的问题,我真的不知道这是预期的行为还是一个bug 我只是随机创建了一个文件流,它不是图像流,而是其他一些文件流,如pdf/doc等。文件流是以可写模式打开的。碰巧我的代码的另一部分,由于某些原因,将文件流的位置设置为超出实际文件流长度的大值 然后我通过传递这个文件流调用了位图的构造函数,存储在磁盘上的实际文件被更改,文件大小变得太大。当我打开修改后的文件并进行检查时,我注意到当文件流的位置超出其长度时,Bitmap类正在填充空字符。文件大小正变得等于我设置的位置值。然后我注意到它
Bitmap bitmap = null;
FileStream fs = new FileStream(@"C:\\sampleFile.ext", FileMode.Open, FileAccess.ReadWrite);
try
{
fs.Position = fs.Length * 100;
bitmap = new Bitmap(fs);
}
catch (Exception)
{
if (bitmap != null)
bitmap.Dispose();
fs.Dispose();
}
我怀疑这是已知的行为吗?来自
支持搜索流长度以外的任何位置。
当搜索超出文件长度时,文件大小将增大
所以,是的,这是记录在案的预期行为。是的。这是众所周知的行为 支持搜索流长度以外的任何位置。当搜索超出文件长度时,文件大小将增大。在Microsoft Windows NT及更新版本中,添加到文件末尾的所有数据都设置为零
Form这是一种预期的行为,因为文件是在读写模式下打开的,并且位置要定位到所需的偏移量。因为文件位置指向指定的位置,所以当文件需要被其他对象读取时,文件用零字节填充,在本例中为位图。因此问题中的
位图
中的焦点都是转移注意力的?