日期:2014-05-17  浏览次数:20878 次

c# 循环多次向txt文本中输入数据,使后一次的数据不覆盖上一次的数据
static void getTrainFeature(String source_f, String feature_f)
  {
  StreamReader reader = new StreamReader(source_f, System.Text.Encoding.Default);
  String content = reader.ReadToEnd();
  reader.Close();
  String[] sentences = content.Split('\n');
  for (int i = 0; i < sentences.Length; i++)
  {
  String[] sentences_part = sentences[i].Split(':');
  String feature = sentences_part[0];
  String f1 = "";//特征1:连续标点符号
  String f2 = "";//特征2:第一第二人称+表达意见的动词
  String f3 = "";//特征3:停用词
  String f4 = "";//特征4:情感标点符号
  f1 = Match1(sentences[i]);//得到特征1
  f2 = Match2(sentences[i]);//得到特征2
  f3 = Match3(sentences[i]);//得到特征3
  f4 = Match4(sentences[i]);//得到特征4
  String path = feature_f;
  FileStream file = new FileStream(path, FileMode.Open);
  StreamWriter read = new StreamWriter(file, Encoding.Default);
  read.Write("\t" + f1 + "\t" + f2 + "\t" + f3 + "\t" + f4 + "\n");
  read.Close();
  file.Close();
  }

 
  }
 
 
以上代码我想通过循环,在txt文本中分行记录每次循环得到的值,可是我的source_f中无论有几行代码,生成的文本中都只有一行,请问怎么输出才能不覆盖呢

------解决方案--------------------
StreamWriter read = new StreamWriter(file, Encoding.Default);
更改为:
StreamWriter read = new StreamWriter(file, true, Encoding.Default);

表示追加。
------解决方案--------------------
File.AppendAllText("", "", Encoding.UTF8);


------解决方案--------------------
直接用File.AppendAllText()方法就行了,无需搞那么复杂。
------解决方案--------------------
sorry。。。看错了,以为变量file是个path呢。


FileStream file = new FileStream(path, FileMode.Open);
改为:
FileStream file = new FileStream(path, FileMode.Append);


如果这句代码中的file是个路劲的话,就可以这么写:
StreamWriter read = new StreamWriter(file, true, Encoding.Default);