如何读取一个字节流byte[]生成txt文件?
我在做一些web的设计,功能之一是要在网页上上传txt文件,然后服务器端读取它生成一个字节流,然后调用一个WebService把这个字节流变成txt文件,并对这个文件按照固定格式读取部分数据,并生成一个XML文件。
我的最终目的是得写入了所需数据的XML文件。
现在碰到的难题是:如何把我所得到的字节流变成txt文件?
我可以用下面的代码对一个实际存在、有文件路径的文件进行按行读取:
             string strLine = "";
             StreamReader sr = new StreamReader("文件路径");
             ArrayList al = new ArrayList();
             while (strLine != null)
             {
                 strLine = sr.ReadLine();
                 al.Add(strLine);
             }
然后在下面的代码中,我已经得到了字节流,但只能把这个字节流解码后放进到字符串变量中。可是怎么做才能把字节流解码了写入一个txt文本中呢?而这个txt文本文件我又不需要真正生成后保存在服务器硬盘上,我只是想使用readline()来读取其中的数据。
     //上传按钮触发事件,读取txt并显示内容到textbox1中
     protected void Button1_Click(object sender, EventArgs e)
     {
         //获取完整长文件名(短文件名+扩展名)
         string fileName = this.FileUpload1.PostedFile.FileName.ToString();
         //上传文件的大小(byte)
         int fileLength = this.FileUpload1.PostedFile.ContentLength;
         //获取文件的短文件名
         string frontFileName = Path.GetFileNameWithoutExtension(this.FileUpload1.PostedFile.FileName);
         //获取文件的扩展名
         string fileExt = fileName.Substring(fileName.LastIndexOf("."));
         //重新设置一个新的完整长文件名,格式为:短文件名+上传时间+扩展名
         fileName = "\\" + frontFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileExt;
         //使用新文件名将文件保存到服务器的项目文件夹upload中
         try  
         {
             //文件保存
             FileUpload1.PostedFile.SaveAs(HttpRuntime.AppDomainAppPath + @"\upload\" + fileName);
             string fileurl = HttpRuntime.AppDomainAppPath + @"\upload\" + fileName;
             Response.Write("文件上传成功");
             //读取文件,获得字节流
             FileStream fs = new FileStream(fileurl, FileMode.Open);
             long i = fs.Length;
             byte[] b = new byte[i];  
            fs.Read(b, 0, Convert.ToInt32(b.Length)); //得到所要的字节流b
             UTF8Encoding temp = new UTF8Encoding(true);
             string data = temp.GetString(b);//字节流被解码并放入到一个字符串中
             fs.Close();             
         }
         catch (Exception exc)  
         {
             Response.Write("文件上传错误,原因:"+exc.ToString());  
         }
------解决方案--------------------
      static void Main(string[] args)
     {
        byte[] byData;
        char[] charData;
        try
        {
           FileStream aFile = new FileStream("Temp.txt", FileMode.Create);         //创建新文件,若存在原文件则先删除。
           charData = "My pink half of the drainpipe.".ToCharArray();              //创建字符数组
           byData = new byte[charData.Length];
           Encoder e = Encoding.UTF8.GetEncoder();                                 //基于UTF8编码模式创建Encoder对象,即Unicode编码模式
           e.GetBytes(charData, 0, charData.Length, byData, 0, true);              //将字符数组并转换为字节数据
           // Move file pointer to beginning of file
           aFile.Seek(0, SeekOrigin.Begin);
           aFile.Write(byData, 0, byData.Length);                                  //将字节数据写入文件
        }
        catch (IOException ex)
        {
           Console.WriteLine("An IO exception has been thrown!");
           Console.WriteLine(ex.ToString());
           Console.ReadKey();
           return;
        }
------