今天闲下来研究我的恶作剧程序,原先的设计是用文件流来读取文件,然后修改每个字节的二进制值,后来字节尝试了下 代码虽然成功了 但是后来发现一个很成问题的问题 就是效率
用实验来分析 首先使用一个TXT作为实验对象,里面10个1 程序执行很快 全部替换成2 然后换成一个 200M的MP4文件 尼玛这个东西字节数达到了1亿多 程序执行了好长时间都没结束
后来准备采用部分写入的方法 就是限制写入的文件流的字节数,结果发现效果不明显,有些文件损坏点字节还是能用,挣到准备放弃的写这篇文档的时候,灵光一闪,我干嘛还要去遍历字节数组啊,数组生成的时候不就默认有值了么 不就是0 么 哈哈 然后做了一个测试果然速度快太多了 但是也没有想想中的那么好 因为破坏一个1.2G的电影都花了35秒 这效率... 不过想想 如果破坏的顺序修改下或许也不错 就是把遇到大文件 的时候先存放路径然后跳过 等全部破坏完了 在破坏大文件
核心代码 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
static
void
Main( string [] args)
{
FileStream fs = file.Open(FileMode.OpenOrCreate);
//byte[] bb = new byte[fs.Length];
//fs.Read(bb, 0, bb.Count());
byte [] cc = new
byte [fs.Length];
//for (int i = 0; i < cc.Length; i++)
//{
// cc[i] = 50;
//}
fs.Write(cc, 0, cc.Count());
// fs.Position = 0;
fs.Flush();
fs.Dispose();
fs.Close();
}
|