把所有这些流放在一起可以吗?
本文关键字:在一起 所有这些 | 更新日期: 2023-09-27 18:15:10
我希望能够打开文件,读取字节,添加值(我的加密密钥)并将其写入新文件。所以我的问题是这种方法可以吗?
const int ENCRYPE_KEY = 12345;
static void Encrypt(string fileName)
{
using (FileStream streamToRead = File.OpenRead(fileName))
{
using (BinaryReader reader = new BinaryReader(streamToRead))
{
using (FileStream streamToWrite = File.Create(@"D:'temp'encrypted.jpg"))
{
using (BinaryWriter writer = new BinaryWriter(streamToWrite))
{
for (int i = 0; i < streamToRead.Length; i++)
{
byte b = reader.ReadByte();
writer.Write((byte)(b + ENCRYPE_KEY));
}
}
}
}
}
}
代替箭头反模式我建议使用Linq查询(如果文件足够小- ReadAllBytes
-适合内存):
var target = File
.ReadAllBytes(fileName)
.Select(b => (byte)(unchecked(b + ENCRYPE_KEY))) // do not forget to allow overflow
.ToArray();
File.WriteAllBytes(@"D:'temp'encrypted.jpg", target);
你可以这么做。我觉得它更干净。
byte[] data = File.ReadAllBytes(fileName);
using (FileStream streamToWrite = File.Create(@"D:'temp'encrypted.jpg"))
using (BinaryWriter writer = new BinaryWriter(streamToWrite))
{
for (int i = 0; i < data.Length; i++)
{
writer.Write((byte)(data[i] + ENCRYPE_KEY));
}
}