Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 位图类正在通过填充空字符更改输入文件流_C#_.net_Winforms - Fatal编程技术网

C# 位图类正在通过填充空字符更改输入文件流

C# 位图类正在通过填充空字符更改输入文件流,c#,.net,winforms,C#,.net,Winforms,我遇到了一些奇怪的问题,我真的不知道这是预期的行为还是一个bug 我只是随机创建了一个文件流,它不是图像流,而是其他一些文件流,如pdf/doc等。文件流是以可写模式打开的。碰巧我的代码的另一部分,由于某些原因,将文件流的位置设置为超出实际文件流长度的大值 然后我通过传递这个文件流调用了位图的构造函数,存储在磁盘上的实际文件被更改,文件大小变得太大。当我打开修改后的文件并进行检查时,我注意到当文件流的位置超出其长度时,Bitmap类正在填充空字符。文件大小正变得等于我设置的位置值。然后我注意到它

我遇到了一些奇怪的问题,我真的不知道这是预期的行为还是一个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

这是一种预期的行为,因为文件是在读写模式下打开的,并且位置要定位到所需的偏移量。因为文件位置指向指定的位置,所以当文件需要被其他对象读取时,文件用零字节填充,在本例中为位图。

因此问题中的
位图
中的焦点都是转移注意力的?