保存文件提示:偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量

wanggenhu0 2009-03-28 11:40:05
读取文件代码为:
SqlDataReader sqlread = datacon.getread3("select id,image,name,size,type from imageandfile where ID='" + this.textBox1.Text.ToString() + "'");

while (sqlread.Read())
{
Int32 filesize = Convert.ToInt32(sqlread["size"]);

string filename = sqlread["name"].ToString();
MessageBox.Show("文件名是:" + filename + "文件大小:" + filesize.ToString());
byte[] b = new byte[filesize];
b = (byte[])sqlread["image"];
FileStream fs = new FileStream(@"c:\gen.txt", FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(b, 0, filesize);
fs.Close();
bw.Close();
}
sqlread.Close();
谢谢!这是保存按钮的代码,但老是保存不了,运行后提示偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量,希望高手帮忙!
...全文
1678 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgke 2009-03-28
  • 打赏
  • 举报
回复
string filename = sqlread["name"].ToString();

byte[] b = (byte[])sqlread["image"];

FileStream fs = new FileStream(@"c:\gen.txt", FileMode.CreateNew);
fs.Write(b, 0, b.Length);
fs.Close();

MessageBox.Show("文件名是:" + filename + "文件大小:" + b.Length.ToString());

保存的时候不需要保存大小...
wanggenhu0 2009-03-28
  • 打赏
  • 举报
回复
byte[] b = new byte[filesize];
就是这一行,有问题,不知道怎么修正。
EveryCase 2009-03-28
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~~
wanggenhu0 2009-03-28
  • 打赏
  • 举报
回复
谢谢啊,成功了!

111,126

社区成员

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

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

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