C# 使用c将文件(从流)保存到磁盘#

C# 使用c将文件(从流)保存到磁盘#,c#,.net,C#,.net,可能重复: 我有一个流对象,可能是图像或文件(msword,pdf),我决定以非常不同的方式处理这两种类型,因为我可能希望优化/压缩/调整大小/生成缩略图等。我调用一种特定方法将图像保存到磁盘,代码: var file = StreamObject; //if content-type == jpeg, png, bmp do... Image _image = Image.FromStream(file); _image.Save(path); //if pdf, wor

可能重复:

我有一个流对象,可能是图像或文件(msword,pdf),我决定以非常不同的方式处理这两种类型,因为我可能希望优化/压缩/调整大小/生成缩略图等。我调用一种特定方法将图像保存到磁盘,代码:

var file = StreamObject;

//if content-type == jpeg, png, bmp do...
    Image _image = Image.FromStream(file);
    _image.Save(path);

//if pdf, word do...
如何实际保存word和PDF

//multimedia/ video?

我已经找过了(可能不够努力),但我在任何地方都找不到它…

如果数据已经有效,并且已经包含pdf、word或图像,那么您可以使用StreamWriter并保存它。

对于文件类型,您可以依赖文件扩展名,并将其写入您可以使用的磁盘。或者一个

示例(假设您已经有一个流):

我必须引用乔恩(c#的大师)的话:

嗯,最简单的方法就是 打开文件流,然后使用:

字节[]数据=memoryStream.ToArray(); fileStream.Write(数据,0, 数据(长度)

但这相对来说效率很低, 因为它涉及到复制缓冲区。 小河流也可以,但是 你需要大量的数据 考虑使用:

fileStream.Write(memoryStream.GetBuffer(), 0,内存流位置)

对于文件流:

//Check if the directory exists
if (!System.IO.Directory.Exists(@"C:\yourDirectory"))
{
    System.IO.Directory.CreateDirectory(@"C:\yourDirectory");
}

//Write the file
using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(@"C:\yourDirectory\yourFile.txt"))
{
    outfile.Write(yourFileAsString);
}

如果您使用的是.NET 4.0或更新版本,则可以使用以下方法:

public static void CopyStream(Stream input, Stream output)
{
    input.CopyTo(output);
}
如果没有,请使用此选项:

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8 * 1024];
    int len;
    while ( (len = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, len);
    }    
}
下面是如何使用它:

using (FileStream output = File.OpenWrite(path))
{
    CopyStream(input, output);
}

只需使用简单的文件流即可

var sr1 = new FileStream(FilePath, FileMode.Create);
                sr1.Write(_UploadFile.File, 0, _UploadFile.File.Length);
                sr1.Close();
                sr1.Dispose();

_File是一个字节[],在文件路径中可以指定文件扩展名

抱歉,误读了这个问题……如果有任何一个问题不起作用,请看这里。任何代码的示例?我当前得到:StreamWriter filewriter=新的StreamWriter(文件);我想将文件保存到磁盘上的特定位置。我如何将文件保存到磁盘,示例代码?谢谢,我还将文件流包装在using语句中…我只给出了一个示例代码。。你没有要求最佳实践。。不管怎样,最好将FileStream放在using语句中,并在using语句中使用MemoryStream(ByteInstream)。我认为这是危险的代码
Stream.Read
不保证它将完成指定长度的读取(
bytesInStream.length
)。这就是为什么它返回一个表示实际读取量的值。忽略此返回值,并且在
amtretured
的情况下不正确操作,此代码是一种危险的维护危险,有时可能会起作用(对于短流),但迟早会在您的脸上爆炸。不要使用此代码。由于上述代码是从中复制的,我相信原始答案的引用已就位。您确定吗?也许是从哪里来的?或者是从哪里来的?我猜这个实现更老了。也许我当时使用了Jon答案中的代码,但我记不起来了,因为那是将近4年前的事了;)FileStream.Close()和FileStream.Dispose()是同一件事——没有理由同时使用它们。
var sr1 = new FileStream(FilePath, FileMode.Create);
                sr1.Write(_UploadFile.File, 0, _UploadFile.File.Length);
                sr1.Close();
                sr1.Dispose();