有个想法, 想将任意文件 保存为文本里的内容,就好像资源文件里保存图片那样。经过简单测试,基本完成了。如果发现有什么bug,希望能告诉我,好让我改进。



private const int BufferSize = 1024 * 8;

        
/// <summary>
        
/// 将流转换成字符串
    
/// </summary>
        
/// <param name="s">文件留</param>
        
/// <returns>流的字符形式</returns>
        public static string ToBase64String(Stream s)
        {

            
byte[] buff = null;
            StringBuilder rtnvalue 
= new StringBuilder();

            
using (System.IO.BinaryReader br = new System.IO.BinaryReader(s))
            {
                
do
                {
                    buff 
= br.ReadBytes(BufferSize);
                    rtnvalue.Append(Convert.ToBase64String(buff));

                } 
while (buff.Length != 0);

                br.Close();
            }

            
return rtnvalue.ToString(); ;
        }

注:上面的方法里用了StringBuilder,因为如果用string += string 会很占资源,而且BufferSize最好不要太小,以减少读取时的循环次数。

 

假如想还原成流的形式,可以用下面的代码:



}

注:这里用的是文件流,其实也可以用内存流的,其他的就没有研究了,注意的是,为了不保留生成的临时文件,在finally进行删除,但是前提是FileShare.Delete,不然删除时就会出现异常。当流 close 后文件才会不再出现。

相关文章:

  • 2021-06-28
  • 2021-10-15
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2021-08-06
  • 2021-11-07
猜你喜欢
  • 2022-12-23
  • 2021-11-06
  • 2021-11-29
  • 2022-12-23
  • 2021-07-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案