怎么把一个文件读到stream中?

zwbwork 2013-08-20 09:59:31
同事让我调用他写的一个函数 MemoryStream ImgEncode(Stream a)进行文件加密。
那我需要把文件读到stream中,再调用这个函数,再把返回的MemoryStream 写到另一个文件中去。 我初学C#不久,不知这该怎么写啊?

我看网上的都是用filestream或streamreader去读文件, 好像没看到用stream去读文件,不知filestream与streamreader怎么转成stream呢?
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
全栈极简 2013-08-21
  • 打赏
  • 举报
回复
我看网上的都是用filestream或streamreader去读文件, 好像没看到用stream去读文件,不知filestream与streamreader怎么转成stream呢? Stream stream = File.Open("test.txt", FileMode.OpenOrCreate);//这句就把FileStream用Stream来接收了 StreamReader sr = new StreamReader(stream);//这里stream就是Stream,StreamReader可以直接从Stream来读取
宝_爸 2013-08-21
  • 打赏
  • 举报
回复
这个简单,我说应该不用吧File读到Byte[]在转成Stream那么麻烦吗:


using (FileStream fileStream = File.OpenRead(filePath))
{
MemoryStream memStream = new MemoryStream();
memStream.SetLength(fileStream.Length);
fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length);
}


代码来自:
Back to Basics – Reading a File into Memory Stream
http://www.codeproject.com/Articles/164372/Back-to-Basics-Reading-a-File-into-Memory-Stream
全栈极简 2013-08-20
  • 打赏
  • 举报
回复
MemoryStream和FileStream都是Stream的子类。
 Stream stream = File.Open("test.txt", FileMode.OpenOrCreate);//这句就把文件读到了stream,然后你直接调用你同事的那个方法,作为参数就行了
            byte[] bytes = new byte[(int)stream.Length];//初始化一个字节数组
            stream.Read(bytes, 0, bytes.Length);//将文件读到字节数组中

            MemoryStream ms = new MemoryStream(bytes);//用MemoryStream接收
            ms.Seek(0, SeekOrigin.Begin);//从开始处设置
            ms.WriteTo(new FileStream("newFile.txt", FileMode.OpenOrCreate));//再把返回的MemoryStream 写到另一个文件中去
rtdb 2013-08-20
  • 打赏
  • 举报
回复

        public static void EncryptFile(String fileIn, String fileOut, String Password)
        {
                FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read);
                FileStream fsOut = new FileStream(fileOut, FileMode.Create, FileAccess.Write);
                CryptoStream cs = new CryptoStream(fsOut);
                byte[] buffer = new byte[BUFSIZE];
                int bytesRead;
                while ((bytesRead = fsIn.Read(buffer, 0, BUFSIZE)) > 0)
                {
                    cs.Write(buffer, 0, bytesRead);
                }
                cs.Close();
                fsIn.Close();
                fsOut.Close();
        }
threenewbee 2013-08-20
  • 打赏
  • 举报
回复
filestream是stream的一个派生类。stream是抽象基类。你可以认为filestream就是stream。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧