我想做个上传文件的功能,但是大文件会报错,有什么办法:比如分段读取 写入,,,,,,,
代码应该怎么样写?
http://blog.csdn.net/xs_zgsc/article/details/8468883
用内存映射类MemoryMappedFile
http://www.cnblogs.com/briny/archive/2012/11/25/2787188.html
private void button1_Click(object sender, EventArgs e)
{
const long ChunkSize = 102400;//100K 每次读取文件,只读取100K
using (OpenFileDialog fbd = new OpenFileDialog())
{
fbd.Filter = "(*.*)|*.txt";
if (fbd.ShowDialog(this) == DialogResult.OK)
{
byte[] bytcontent = new byte[ChunkSize];
FileStream fs = new FileStream(fbd.FileName,FileMode.Open);
long dataLengthToRead = fs.Length;//获取下载的文件总大小
while (dataLengthToRead > 0)
{
int lengthRead = fs.Read(bytcontent, 0, Convert.ToInt32(ChunkSize));//读取的大小
Thread t = new Thread(new ParameterizedThreadStart(Readfile));
t.Start(System.Text.Encoding.Default.GetString(bytcontent));
dataLengthToRead -= lengthRead;
}
}
}}
public delegate void Callback(string str);
private void Readfile(object content)
{
if (richTextBox1.InvokeRequired)
{
Callback call = new Callback(Readfile);
this.BeginInvoke(call, new object[] { content });
}
else
{
this.richTextBox1.AppendText(content.ToString());
this.richTextBox1.AppendText("\r\n");
}
}
4G以下的文件都可以