当前位置:编程学习 > C#/ASP.NET >>

各位大佬,有知道的言语一声,在此先谢过了。

//程序执行后,在D盘找到文件用记事本打开后,查看保存的数据不全,不知为什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace arrayfile
{
    class Program
    {
        static void Main()
     {
  /////////////////此段程序为存储数组数据到文件。
  int[] m_Temp = new int[] { 168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
   168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 88, 77, 11, 22, 33, 44, 55, 66,77,88,99,00,11,22,33,44,55,66,77,
  168, 126, 83, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99, 86, 33, 22};
////////////////////////////////////////////////////////////////////
 FileStream ft = new FileStream("d:\\16.txt", FileMode.OpenOrCreate );
  StreamWriter st = new StreamWriter(ft);
  int i = 0;

  foreach (int bt in m_Temp)
  {
    
  st.WriteLine((i++) +","+bt);  
  }
  st.Flush();
}
}
}  --------------------编程问答-------------------- 把 st close 掉,最好放在 using 语句里 --------------------编程问答-------------------- FileStream和StreamWrite都要显示调用Close()
st.Flush()只是将缓冲区内容写进ft
ft在缓冲区满时会将内容写入文件,如果缓冲区没满,不会主动写入文件,除非调用ft.Flush()或者ft.Close(),(后一个函数调用时会自动调用前一个函数)
丢失数据的原因就是没有显示地指示ft将缓冲区内容写入文件 --------------------编程问答-------------------- FIle.WriteAllText
当StreamWriter内部的缓冲区充满或调用Flush时,才会把数据写入Stream对象中。
StreamWriter 在内部缓冲数据,这需要调用 Close 或 Flush 方法将缓冲数据写到基础数据存储区。如果没有适当地调用 Close 或 Flush,StreamWriter 实例中缓冲的数据可能不会按预期写出。
--------------------编程问答-------------------- 根据大家的回复,添加ft.Close(),问题解决,Thank.
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,