zoukankan      html  css  js  c++  java
  • .net 流读取

    Uri myUri = new Uri(“http://www.xxx.com/xx.jpg");

    HttpWebRequest myWebRequest
    = (HttpWebRequest)WebRequest.Create(myUri);

    myWebRequest.Method 
    = "GET";

    HttpWebResponse  myWebResponse
    = (HttpWebResponse)myWebRequest.GetResponse();

    StreamReader reader 
    = new StreamReader(myWebResponse.GetResponseStream(),Encoding.ASCII);

    byte[] buffer = Encoding.ASCII.GetBytes(reader.ReadToEnd());
    FileInfo file 
    = new FileInfo(@"C:\xxx.jpg");
    BinaryWriter writer 
    = new BinaryWriter(file.Open(FileMode.Create, FileAccess.Write));
    writer.Write(buffer, 
    0, buffer.Length);

    writer.Close();

    开始用Encoding.Default,取出来的字节流长度(buffer.Length)和原始图片的长度(myWebRequest.ContentLength)都不符,很明显是Encoder的问题,换了ASCII,长度一致了,但是还是无法显示。把Reader对象Reflect了一下,又看了以下Encoding.ASCII,发现其GetBytes里有这么一段:

    while (charIndex < num1)
    {
        
    char ch1 = chars[charIndex++];
        
    if (ch1 >= '\x0080')
        
    {
          ch1 
    = '?';
        }

        bytes[byteIndex
    ++= (byte) ch1;
    }

    原来的字节流并不是原封不动的被保存了,结果肯定会无法显示正常的图片。

    没办法只好换了个办法,直接用Bitmap对象来保存图片。虽然结果是没问题了。但是之前的这种保存方式难道就完全不可行了吗?不知道哪位高人可以给一个正解。
  • 相关阅读:
    【shell脚本】批量修改扩展名===modifyExtension.sh
    【shell脚本】打印九九乘法表
    【shell脚本】显示进度条
    【Linux命令】Linux压缩及解压命令
    【Linux命令】ulimit设置最大文件打开数
    【mysql】修改mysql数据库密码
    【raid级别】RAID级别工作模式
    MyBatis之#{} and ${}
    MyBatis之foreach
    强制修改常量的值
  • 原文地址:https://www.cnblogs.com/darejoy/p/937290.html
Copyright © 2011-2022 走看看