private void button4_Click(object sender, RoutedEventArgs e)
{
if (openFile.ShowDialog() == true)
{
openFile.File.OpenRead(); }
if (openFile.File != null)
{
filname = "123.txt";
WebClient webclient = new WebClient(); Uri uri = new Uri("http://192.1.2.3:80/ReaderClientTestPage.html?filename+" + filname, UriKind.Absolute);
webclient.OpenWriteCompleted += new OpenWriteCompletedEventHandler(webclient_OpenWriteCompleted);
webclient.OpenWriteAsync(uri, "POST", openFile.File.OpenRead());
}
else
{
// MessageBox.Show("请先选择文件!");
}
}
void webclient_OpenWriteCompleted(object sender,OpenWriteCompletedEventArgs e)
{
Stream inputStream = e.UserState as Stream;
Stream outputStream = e.Result;
byte[] buffer = new byte[1024];
int bytesRead = 0;
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
}在按钮里,打开文件,,然后触发事件---webclient_OpenWriteCompleted()
在这里做文件读操作 bytesRead = inputStream.Read(buffer, 0, 2); 一次读文件中2个字节(测试写固定内容:ABCDEFGH)
共四句
第一次读到了 AB
第二次:CD
第三次:EF
第四次:GH
只要文件流不关闭,每次都会从上次结束的地方,作为新一次读的开始, 但现在,想判断文件的结束,,怎么弄呢?
像C 里的
if(!feof(fptr))
这样的
就是把 bytesRead = inputStream.Read(buffer, 0, 2); 整成一句,,在一个判断里,只要文件没有读完,就继续读
每次读到长度相同谢谢
{
if (openFile.ShowDialog() == true)
{
openFile.File.OpenRead(); }
if (openFile.File != null)
{
filname = "123.txt";
WebClient webclient = new WebClient(); Uri uri = new Uri("http://192.1.2.3:80/ReaderClientTestPage.html?filename+" + filname, UriKind.Absolute);
webclient.OpenWriteCompleted += new OpenWriteCompletedEventHandler(webclient_OpenWriteCompleted);
webclient.OpenWriteAsync(uri, "POST", openFile.File.OpenRead());
}
else
{
// MessageBox.Show("请先选择文件!");
}
}
void webclient_OpenWriteCompleted(object sender,OpenWriteCompletedEventArgs e)
{
Stream inputStream = e.UserState as Stream;
Stream outputStream = e.Result;
byte[] buffer = new byte[1024];
int bytesRead = 0;
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
bytesRead = inputStream.Read(buffer, 0, 2);
}在按钮里,打开文件,,然后触发事件---webclient_OpenWriteCompleted()
在这里做文件读操作 bytesRead = inputStream.Read(buffer, 0, 2); 一次读文件中2个字节(测试写固定内容:ABCDEFGH)
共四句
第一次读到了 AB
第二次:CD
第三次:EF
第四次:GH
只要文件流不关闭,每次都会从上次结束的地方,作为新一次读的开始, 但现在,想判断文件的结束,,怎么弄呢?
像C 里的
if(!feof(fptr))
这样的
就是把 bytesRead = inputStream.Read(buffer, 0, 2); 整成一句,,在一个判断里,只要文件没有读完,就继续读
每次读到长度相同谢谢
var offset = 0;
var len = 0;
using (var fs = File.OpenWrite(filename))
{
while ((len = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, len);
offset += len;
}
}
只要 Read 返回的 length == 0 就说明读完了。
{
//...
}