using (FileStream file = new FileStream("file.bin", FileMode.Create, System.IO.FileAccess.Write)) {
byte[] bytes = new byte[ms.Length];
ms.Read(bytes, 0, (int)ms.Length);
file.Write(bytes, 0, bytes.Length);
ms.Close();
}
这个函数将一个文件读入内存流:
using (MemoryStream ms = new MemoryStream())
using (FileStream file = new FileStream("file.bin", FileMode.Open, FileAccess.Read)) {
byte[] bytes = new byte[file.Length];
file.Read(bytes, 0, (int)file.Length);
ms.Write(bytes, 0, (int)file.Length);
}
MemoryStream ms = new MemoryStream();
FileStream file = new FileStream("file.bin", FileMode.Create, FileAccess.Write);
ms.WriteTo(file);
file.Close();
ms.Close();
MemoryStream ms = new MemoryStream();
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); // here you can change the Image format
byte[] Pic_arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(Pic_arr, 0, Pic_arr.Length);
ms.Close();
在这里你可以加载,但我用了一个PictureBox控件。
MemoryStream ms = new MemoryStream(picarr);
ms.Seek(0, SeekOrigin.Begin);
fotos.pictureBox1.Image = System.Drawing.Image.FromStream(ms);
9条答案
按热度按时间nc1teljy1#
您可以使用
MemoryStream.WriteTo
或Stream.CopyTo
(框架版本4.5.2、4.5.1、4.5、4支持)方法将内存流的内容写入另一个流。更新:
cs7cruho2#
假设内存流名称为
ms
。此代码将MemoryStream写入文件:
这个函数将一个文件读入内存流:
在.Net Framework 4+中,您可以简单地将FileStream复制到MemoryStream,然后进行反向操作,就像这样简单:
反之亦然(内存流到文件流):
hmtdttj43#
即使出现异常(很可能是文件I/O),数据流也应该被处理掉--使用子句是我最喜欢的方法,所以在编写MemoryStream时,可以用途:
为了让你重温:
如果文件很大,那么值得注意的是,阅读操作将使用两倍于文件总大小的内存。一个解决方案是从字节数组创建MemoryStream-以下代码假设您不会写入该流。
我的研究(下面)表明,内部缓冲区与您传递的字节数组相同,因此它应该可以保存内存。
ecfsfe2w4#
对于任何寻找简短版本的人:
wz1wpwve5#
写入文件的组合答案可以是;
rhfm7lfc6#
对于加载文件,我更喜欢这个
ssm49v7z7#
保存到文件中
从文件加载
其中
最初这个类的实现已经发布here
以及
k7fdbhmy8#
我使用面板控件来添加图像,甚至是流视频,但是你可以在SQL Server上将图像保存为Image,或者在MySQL上将图像保存为largeblob。这段代码对我来说很有用。看看吧。
在此保存图像
在这里你可以加载,但我用了一个PictureBox控件。
希望能帮上忙。
798qvoo89#
用法:-