2014-07-22 34 views
0

我有以下代码读取一个文本文件,并计数多少次出现过的单词,然后将其保存到一个变量:如何将变量值写入到文件

try 
      { 
       StreamReader sr = new StreamReader(@"C:\Readfile.txt"); 
       text = sr.ReadToEnd(); 

       string textData = Regex.Replace(text, @"[^0-9a-zA-Z]+", " "); 

       char[] whitespace = new char[] { ' ', '\t' }; 
       string[] data = textData.Split(whitespace); 
       int i = 1; 

       while (i < data.Length) 
       { 
        st = data[i]; 

        string[] source = text.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries); 

        var matchQuery = from word in source 
            where word.ToLowerInvariant() == st.ToLowerInvariant() 
            select word; 

        int wordCount = matchQuery.Count(); 
        k += wordCount + ": " + st + "\n"; 
        //MessageBox.Show(k); 
        i++; 
       } 
       StreamWriter sr4 = new StreamWriter(@"C:\WhatFound.txt"); 
       sr4.Write(k); 

      } 
      catch (Exception ce) 
      { 
      } 
     } 

当我点击按钮它应该将变量k写入WhatFound.txt,但没有任何事情发生。

我该如何解决?

+5

你检查,看看你的StreamWriter抛出一个异常?空的catch块是一个no no – tier1

+0

什么都没有发生,因为你说“如果有错误,什么也不要做,不要通知我。” – usr

+0

谢谢。我添加了try catch块,但它是由@AlexD解决它的答案:) – Si8

回答

1

您的代码可能存在不同的问题。正如@ tier1所说,它可能是一个例外。此外,你应该关闭流。一个简单的替代方法可能是

File.WriteAllText(@"C:\WhatFound.txt", k); 

(它仍然可能抛出当然是一个例外。一般来说,最好避免空包罗万象的块。)

1

你有没有睾丸,如果你k变量是空的?

也许工作正常,正在写东西,但如果k是空的,那么它应该显示为没有任何事情发生。

尝试类似:

if(!string.IsNullOrEmpty(k)): 
    //Then write in the text file 

而且在finally块...

编辑:由于AlexD说:更好地利用使用

using (StreamWriter sw = new StreamWriter("CDriveDirs.txt")) 
      { 
       foreach (DirectoryInfo dir in cDirs) 
       { 
        sw.WriteLine(dir.Name); 

       } 
      } 

下面的链接:

http://msdn.microsoft.com/es-es/library/system.io.streamwriter(v=vs.110).aspx

OLD:

关闭流

try 
{ 
} 
catch 
{ 
} 
finally 
{ 
    sr4.Close() 
} 
+0

是的,你可以这样做...是一样的,但你是对的,这是更清晰的方式;) –

1

另一个可能的问题,除了由奥斯卡布拉洛和AlexD提到的:你跳过第一个字。

我相信你应该做到以下几点:

for (int i = 0; i < data.Length; i++) 
{ 
    // Process data[i] 
} 

在你原来的代码,你就“我”的一个:

  int i = 1; 

      while (i < data.Length) 
      { 
       // Process data[i] 
       i++; 
      }