怎么把一个文件读到stream中?
同事让我调用他写的一个函数 MemoryStream ImgEncode(Stream a)进行文件加密。
那我需要把文件读到stream中,再调用这个函数,再把返回的MemoryStream 写到另一个文件中去。 我初学C#不久,不知这该怎么写啊?
我看网上的都是用filestream或streamreader去读文件, 好像没看到用stream去读文件,不知filestream与streamreader怎么转成stream呢?
[解决办法]
refer : http://wen49880132.blog.163.com/blog/static/144690820121118101751739/
[解决办法]
filestream是stream的一个派生类。stream是抽象基类。你可以认为filestream就是stream。
[解决办法]
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();
}
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 写到另一个文件中去
using (FileStream fileStream = File.OpenRead(filePath))
{
MemoryStream memStream = new MemoryStream();
memStream.SetLength(fileStream.Length);
fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length);
}