如下代码:
FileStream fs = new FileStream("c:\\1.mp3", FileMode.Open);
byte[] tmpbyte = new byte[fs.Length ];
fs.Read(tmpbyte, 0, fs.Length);
fs.Close ()
因为这个文件的长度已经超过了Read方法中第三个参数int类型的大小,所以会报错。
不知道有什么好办法来处理呢?
FileStream fs = new FileStream("c:\\1.mp3", FileMode.Open);
byte[] tmpbyte = new byte[fs.Length ];
fs.Read(tmpbyte, 0, fs.Length);
fs.Close ()
因为这个文件的长度已经超过了Read方法中第三个参数int类型的大小,所以会报错。
不知道有什么好办法来处理呢?
解决方案 »
- C# 调用C++接口问题,传递参数为结构体引用,结构体中有返回数据
- 关于fixed关键字的奇怪问题
- 静态类做为其它的类的字段无法访问其静态方法
- 自动设置宽度datagridview
- "未将对象引用设置到对象的实例"这个错误要如何解决?
- 一个数据绑定的问题,快帮忙啊!!!
- 能否定义一个类CConn,用的时候不声明变量,直接用的它的方法SqlConnention conn=CConn.getConn();
- VS2005安装出现1335错误问题,急~有遇到的兄弟请帮帮忙~
- SQL查询问题
- 我的vs.net 2003一打开asp.net应用程序就说缺少web开发组件?晕。。
- C# winform 属性控件 PropertyGrid控件 问题
- C# 变量数据内容无法插入数据库
所以你可以申请一个交叉数组
byte[][] b = new byte[fs.Length/In32.MaxValue+1][];
然后循环读取
int i;
for(i = 0;i<fs.Length/Int32.MaxValue;i++)
{
b[i][] = new Byte[int.MaxValue];
fs.Read(b[i], i*int.MaxValue, int.MaxValue);
}
把剩余的再读一下
fs.Read(b[i], i*int.MaxValue, fs.Length-i*int.MaxValue);
所以你可以申请一个交叉数组
byte[][] b = new byte[fs.Length/In32.MaxValue+1][];
然后循环读取
int i;
for(i = 0;i<fs.Length/Int32.MaxValue;i++)
{
b[i][] = new Byte[int.MaxValue];
fs.Read(b[i], i*int.MaxValue, int.MaxValue);
}
把剩余的再读一下
b[i] = new Byte[fs.Length-i*int.MaxValue]
fs.Read(b[i], i*int.MaxValue, fs.Length-i*int.MaxValue);
byte[] tmpbyte = new byte[fs.Length ];
int count=fs.Read(tmpbyte,0,1024);
int tmpIndex=0;
while(count!=0)
{
tmpIndex=(tmpIndex+1)*1024;
fs.Read(tmpbyte,tmpIndex , count);
}
fs.Close ()
你要将这么大的文件完全读到内存,程序还能跑得动吗?
不知道你想干什么,换个别的解决思路吧。
byte[] tmpbyte = new byte[fs.Length ];
int count=fs.Read(tmpbyte,0,1024);
int tmpIndex=0;
while(count!=0)
{
tmpIndex=(tmpIndex+1)*1024;
fs.Read(tmpbyte,tmpIndex , count);
}
fs.Close ()