FileStream问题,求助 FileStream s = new FileStream("FileName.txt",FileMode.Create,FileAccess.Write);s.Write(k,0,10000);s.Close(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FileStream fs = new FileStream ( "C\\file.txt" , FileMode.OpenOrCreate , FileAccess.Write ) ;StreamWriter m_streamWriter = new StreamWriter ( fs ) ;m_streamWriter.Flush ( ) ;m_streamWriter.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;m_streamWriter.Write (k) ;m_streamWriter.Flush ( ) ;m_streamWriter.Close ( ) ; int sz; byte[] k=new byte[sz]; if (openFileDialog1.ShowDialog()==DialogResult.OK) { FileStream s=new FileStream(openFileDialog1.FileName,FileMode.OpenOrCreate,FileAccess.Read); sz=s.Length; s.Read(k,0,sz); s.Close(); FileStream x=new FileStream("c:\\1.jpg",FileMode.Create,FileAccess.Write); x.Write(k,0,sz); x.Close(); }我想取得大小来定义缓冲区大小。错误了, 为什么非要通过文件流保存为另一个文件呢,通过File.Copy方法复制然后改名不可以吗,就算在同一个目录下也没关系啊,如果复制到另一个目录下那根本就不用改名了。还有你那10000就一定好使吗,如果文件很大呢,岂不是文件数据丢失? FileStream s = new FileStream(path,FileMode.Create,FileAccess.Write);s.Write(k,0,10000);s.Close();因该没问题吧 using System;using System.IO;namespace csdn{ class Class1 { [STAThread] static void Main(string[] args) { int sz; FileStream s=new FileStream(@"劳斯来斯2.jpg",FileMode.OpenOrCreate,FileAccess.Read); sz=Convert.ToInt32(s.Length); byte[] k=new byte[sz]; s.Read(k,0,sz); s.Close(); FileStream x=new FileStream(@"f:\1.jpg",FileMode.Create,FileAccess.Write); x.Write(k,0,sz); x.Close(); } }} 楼主的问题是:1.s.Length是长整行要转换;2.byte[] k=new byte[sz]应该写在sz=Convert.ToInt32(s.Length);后面如果写在前面sz没有初始化 to dazhu2(边城浪子(倚天不出,谁与争锋))如果buffer byte[]的大小不恰当的话复制后的文件一般比原文件要大几个byte原因就是 原文件的大小不一定 是 10000 的证书倍在最后一次read时 buffer byte[10000] 并没有被填满还有byte[]的大小 最好为2^n 如 1024 512 128 C# 不支持像C++一样的构造函数成员变量赋值? ◇◆◇◆苦苦思索追寻,都没有找到答案的问题,flv地址嗅探,如何解决?◇◆◇◆ 怎么把ACCESS的数据导入ORACLE?谢谢 该成员支持 .NET 框架结构,因此不适用于直接从代码中使用。 各位大侠们帮忙找一下错误,是一个连续IP地址端口扫描程序 vs2005 自定义类引用的问题。 remoting 最头疼问题!!!高手速进 两个问题,up也有分. c# 怎么把 torrent 文件 转换成 磁力链接 如何正确装vs.2003 数据备份
StreamWriter m_streamWriter = new StreamWriter ( fs ) ;
m_streamWriter.Flush ( ) ;
m_streamWriter.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;
m_streamWriter.Write (k) ;
m_streamWriter.Flush ( ) ;
m_streamWriter.Close ( ) ;
byte[] k=new byte[sz];
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
FileStream s=new FileStream(openFileDialog1.FileName,FileMode.OpenOrCreate,FileAccess.Read);
sz=s.Length;
s.Read(k,0,sz);
s.Close();
FileStream x=new FileStream("c:\\1.jpg",FileMode.Create,FileAccess.Write);
x.Write(k,0,sz);
x.Close();
}
我想取得大小来定义缓冲区大小。错误了,
s.Write(k,0,10000);
s.Close();
因该没问题吧
using System.IO;
namespace csdn
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int sz;
FileStream s=new FileStream(@"劳斯来斯2.jpg",FileMode.OpenOrCreate,FileAccess.Read);
sz=Convert.ToInt32(s.Length);
byte[] k=new byte[sz];
s.Read(k,0,sz);
s.Close();
FileStream x=new FileStream(@"f:\1.jpg",FileMode.Create,FileAccess.Write);
x.Write(k,0,sz);
x.Close();
}
}
}
1.s.Length是长整行要转换;
2.byte[] k=new byte[sz]应该写在sz=Convert.ToInt32(s.Length);后面如果写在前面sz没有初始化
如果buffer byte[]的大小不恰当的话
复制后的文件一般比原文件要大几个byte
原因就是 原文件的大小不一定 是 10000 的证书倍
在最后一次read时 buffer byte[10000] 并没有被填满还有byte[]的大小 最好为2^n 如 1024 512 128