关于Stream类的问题,高手进来提示一下

仓木泽 2005-12-20 11:27:43
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl) ;
myReq.Timeout = 3600;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream();
下面我想把myStream保存为一个文件,应该使用哪个类的什么方法?
谢谢了,估计这个问题应该很简单,但是我就是不知道。。
...全文
246 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
greennetboy 2005-12-20
  • 打赏
  • 举报
回复
用StreamWriter.Write可以写char[]!
比如你要写的文件为1.txt
StreamWriter sw = new StreamWriter("1.txt");
char[] buffer = new char[1024];
sw.Write(buffer,0,1024);
sw.Close();
就可以了
hainang1234 2005-12-20
  • 打赏
  • 举报
回复
你给的地址是一个asp,这才是真正的吧?
http://www.vlike.com/vlikeflash/200512/dh/1941_shuijingzhilian.swf

用FlashGet就行了。
hainang1234 2005-12-20
  • 打赏
  • 举报
回复
如果是.swf文件的话怎么可以用Writer呢?不是文本格式,而是二进制格式。要用FileStream。

把char[]改成byte[]。
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
换了其他的编码都有异常。。
其他信息: 在索引 192 处发现无后续低代理项的高代理项字符。输入可能不在此编码内,或者可能不包含有效的 Unicode (UTF-16)字符。
http://www.vlike.com/v.asp?vlikeflash/200512/dh/1941_shuijingzhilian.swf
Flash地址是上面这个,谁能写个小程序把这个保存下来的?
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
把编码换成ASCII以后大小相同但是无法打开。。。
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
我想要保存的文件是一个.swf文件
楼上的方法我运行抱错
我修改了一下变成
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl) ;
myReq.Timeout = 3600;
string filepath = @"E:\SWF";
int start = strUrl.LastIndexOf("/",strUrl.Length);
string filename = strUrl.Substring(start,strUrl.Length - start);

HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
// Stream myStream = HttpWResp.GetResponseStream();

StreamReader sr = new StreamReader(HttpWResp.GetResponseStream(),System.Text.Encoding.Default);
StreamWriter sw = new StreamWriter(filepath+filename);
sw.Write(sr.ReadToEnd());
sw.Close();
sr.Close();
但是保存下来的和FlashGet下来的不一样大。。。
不知道为什么?
swordragon 2005-12-20
  • 打赏
  • 举报
回复
参考一下:

HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl) ;
myReq.Timeout = 3600;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream();

myStream.Position = 0;

byte[] bytes = new byte[(int) myStream.Length];
int numBytesToRead = (int) myStream.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = myStream.Read(bytes, numBytesRead, numBytesToRead);
if (n==0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
myStream.Close();

StreamWriter objsw = new StreamWriter("filepath.txt");
objsw.Write(System.Text.UTF8Encoding.UTF8.GetString(bytes));
objsw.Close();
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
FileStream写的是字节,但是我
int length = 1024;
char [] Buffer = new char[1024];
int bytesread = 0;

// 从流读取并将任何数据写入到控制台
bytesread = sr.Read( Buffer, 0, length);
while( bytesread > 0 )
{
// fs.Write( Buffer,0, bytesread);
bytesread = sr.Read( Buffer, 0, length);
}

// 完成时关闭流
sr.Close();

这个是Char[]类型的。。。
swordragon 2005-12-20
  • 打赏
  • 举报
回复
StreamWriter
tiaoci 2005-12-20
  • 打赏
  • 举报
回复
using(FileStream s = File.OpenWrite(...))
{
......
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
hainang1234(鼠·神·泪)
地址哪个是无所谓的,http://www.vlike.com/v.asp?vlikeflash/200512/dh/1941_shuijingzhilian.swf这个地址一样返回整个Flash的数据流,就是不知道用哪个类来保存那个接收的Stream
因为myStream不支持查询操作。
仓木泽 2005-12-20
  • 打赏
  • 举报
回复
byte[] bytes = new byte[(int) myStream.Length];
异常,此流不支持查询操作

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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