Dictionary<int, byte[]> dic = new Dictionary<int, byte[]>();
FileStream fs = new FileStream("d:\\xx.rar",FileMode.Open);
byte [] buff=new byte[1024*10];
int i = 0;
while (fs.Read(buff, 0, buff.Length) > 0)
{
dic.Add(i,buff);
}
fs.Flush();
fs.Close(); FileStream fss = new FileStream("d:\\aa.rar", FileMode.Create);
//现在我想实现 把dic中的数组写到它相应的位置
//也就说不按dic中的key的顺序写
fss.Write(dic[4],0,dic[4].Length);
fss.Write(dic[2], 0, dic[2].Length);
fss.Write(dic[1], 0, dic[1].Length);
fss.Write(dic[3], 0, dic[3].Length);
fss.Write(dic[0], 0, dic[0].Length);
// 这样写显然文件是打不开的
// 高手们指点指点啊
FileStream fs = new FileStream("d:\\xx.rar",FileMode.Open);
byte [] buff=new byte[1024*10];
int i = 0;
while (fs.Read(buff, 0, buff.Length) > 0)
{
dic.Add(i,buff);
}
fs.Flush();
fs.Close(); FileStream fss = new FileStream("d:\\aa.rar", FileMode.Create);
//现在我想实现 把dic中的数组写到它相应的位置
//也就说不按dic中的key的顺序写
fss.Write(dic[4],0,dic[4].Length);
fss.Write(dic[2], 0, dic[2].Length);
fss.Write(dic[1], 0, dic[1].Length);
fss.Write(dic[3], 0, dic[3].Length);
fss.Write(dic[0], 0, dic[0].Length);
// 这样写显然文件是打不开的
// 高手们指点指点啊
解决方案 »
- 求制作K线图和折线图的比较好用的股票图形绘制类库或者相关。
- 请教如何遍历一个ListDictionary
- C#中执行ftp命令的问题
- 在Win Form 中怎么删除DataGrid中的一行?
- 关于页面间的变量问题
- tabPage1.Controls.Add(userControl1);的问题,难啊!
- 在js脚本中ajax方法执行时,后边的代码就执行了,怎么控制下?
- 如何将多个查询结果集最高效的结合在一起?
- DataGird简单问题???急
- 微软产品支持小组5
- 【WebBrowser】求助!使用WebBrowser加载的网页被js脚本关闭后出现异常
- 有三列数字,每个数字4个字符,请问可以组成多少个12个字符的数字
比如先来key=3的包的话,那么你这样:
fss.BeginWrite(dic[3],1024*10*(3-1),dic[3].Length,null,null);也就是异步来写同一个文件。
fss.Seek(3 * buff.Length, SeekOrigin.Begin);
fss.Write(dic[3], 0, dic[3].Length);
//齐活,就这么2句话
不过写完后大小增加了不少
rar的文件写完后不能解压
FileStream fs = new FileStream("d:\\GreatNews.zip", FileMode.Open);
byte [] buff=new byte[1024*20];
int i = 0;
while (fs.Read(buff, 0, buff.Length) > 0)
{
dic.Add(i,buff);
i = i + 1;
}
fs.Flush();
fs.Close();
FileStream fss = new FileStream("d:\\aa.zip", FileMode.Create); foreach (int key in dic.Keys)
{
fss.Seek(key * buff.Length, SeekOrigin.Begin);
fss.Write(dic[key], 0, dic[key].Length);
}
fss.Flush();
fss.Close();
图片看不到,RAR文件也损坏了,不知道什么原因
改成
fss.Seek((key+1)* buff.Length, SeekOrigin.Begin);
你的KEY有等于0的时候,TXT没有关系,打开的时候没有顺序问题,尽管你写入不对也没关系,还是能打开
但是图片和RAR就不行了,
KEY==0的时候就漏写了一个BUFF,肯定打不开
改成key +1 还是有问题啦
{
fss.Seek(key * buff.Length, SeekOrigin.Begin);
fss.Write(dic[key], 0, dic[key].Length);
}
fss.Flush();
fss.Close();
在读文件的时候改成这样了
Dictionary<int, byte[]> dic = new Dictionary<int, byte[]>();
FileStream fs = new FileStream("d:\\"+textBox1.Text.Trim()+"", FileMode.Open);
byte [] buff=new byte[1024];
int i = 0;
int buffLenth=0;
do
{
buff = new byte[1024];
buffLenth = fs.Read(buff, 0, buff.Length);
dic.Add(i,buff);
i++;
} while (buffLenth > 0);
fs.Flush();
fs.Close();
FileStream fss = new FileStream("d:\\aa"+textBox1.Text.Trim(), FileMode.Create); foreach (int key in dic.Keys)
{
fss.Seek(key*dic[key].Length,SeekOrigin.Begin);
fss.Write(dic[key],0,dic[key].Length);
}
fss.Flush();
fss.Close();
不过没弄明白为什么 用while不行,用do while就可以