2013-04-26 44 views
-1

我有兩個班「allmethods.cs」和「caller.cs」的StreamReader不讀取文本文件C#數據

我在「allmethods.cs」兩種方法類是「WritingMethod」和「ReadingMethod」

程序應該從文本文件中讀寫。當我調用「WritingMethod」時它會寫得很順暢,但當我調用「ReadingMethod」時,它會顯示null,就好像文本文件中沒有數據。

我無法識別我的代碼中存在的問題,如果有人幫助我識別問題,我會很高興。

這裏是我的代碼:

public class allmethods 
{ 
    private static string Name; 
    private static int ID; 
    private static int Age; 
    private static string Email; 
    private static string output; 

    public static void WritingMethod() 
     { 
      int count = 0; 
      while (count < 2) 
      { 
      Console.Write(" Enter your Name: "); 
      Name = Console.ReadLine(); 

      Console.Write(" Enter your ID: "); 
      ID = int.Parse(Console.ReadLine()); 

      Console.Write(" Enter your Age: "); 
      Age = int.Parse(Console.ReadLine()); 

      Console.Write(" Enter your E-mail: "); 
      Email = Console.ReadLine(); 



     StreamWriter Sw = new StreamWriter("fileone.txt", true); 
     string output = string.Format("Thank you for registration! Your Submitted information are:" + Environment.NewLine + "Name: {0}" 
     + Environment.NewLine + "ID: {1}" + Environment.NewLine + "Age: {2}" + Environment.NewLine + "E-mail: {3}", Name, ID, Age, Email); 
     Console.WriteLine(output);  
     Sw.WriteLine(output + Environment.NewLine); 
     Console.ReadLine(); 

     Sw.Close(); 
     count++; 
     } 

    } 

    public static void ReadingMethod() 
    { 

     FileStream fsr = new FileStream("fileone.txt", FileMode.Open, FileAccess.Read);  
     StreamReader Sr = new StreamReader(fsr);  
     string line = Sr.ReadLine(); 
     Console.WriteLine("--Reading The File--" + Environment.NewLine + output + Environment.NewLine); 
     Console.ReadLine(); 

     Sr.Close(); 
     fsr.Close(); 
    } 
} 

非常感謝你。等待你的答案。

+0

你有輸出,而不是在ReadingMethod行 – 2013-04-26 01:28:13

回答

2

看來你還沒有設置變量output。你已經設置了line變量。

public static void ReadingMethod() 
    { 

     FileStream fsr = new FileStream("fileone.txt", FileMode.Open, FileAccess.Read);  
     StreamReader Sr = new StreamReader(fsr);  
     string line = Sr.ReadToEnd(); 
     Console.WriteLine("--Reading The File--" + Environment.NewLine + line + Environment.NewLine); 
     Console.ReadLine(); 

     Sr.Close(); 
     fsr.Close(); 
    } 

我已經修改了從output變更爲line

希望它有幫助。

+2

謝謝你的回答,這是我的不好:S但它仍然只讀第一行。我希望它讀取文本文件中的全部數據。 – 2013-04-26 01:27:49

+0

您可以使用ReadToEnd而不是ReadLine – ysrb 2013-04-26 01:30:30

+0

或使用File.ReadAllText([FilePah]) – 2013-04-26 01:49:33

1

這是一系列的問題的全面解決方案:

public partial class AllMethods { 
    static T ReadData<T>(String prompt, T value) { 
     Console.Write(prompt); 
     return (T)Convert.ChangeType(Console.ReadLine(), typeof(T)); 
    } 

    public static void WritingMethod(int timesToInput) { 
     using(var sw=new StreamWriter(path, true)) 
      for(var list=items.ToArray(); timesToInput-->0;) { 
       var inputs=new Dictionary<String, object>(); 

       for(var i=0; i<list.Length; ++i) { 
        var item=list[i]; 
        var prompt=String.Format(" Enter your {0}: ", item.Key); 

        inputs.Add(
         item.Key, AllMethods.ReadData(prompt, item.Value)); 
       } 

       var output=String.Format(format, inputs.Values.ToArray()); 
       sw.WriteLine(output+Environment.NewLine); 
       Console.WriteLine(output); 
       Console.ReadLine(); 
      } 
    } 

    public static void ReadingMethod() { 
     var textFromFile= 
      String.Join(Environment.NewLine, File.ReadAllLines(path)); 

     Console.WriteLine(
      "--Reading The File--"+Environment.NewLine+textFromFile); 

     Console.ReadLine(); 
    } 

    static AllMethods() { 
     items=new Dictionary<String, object>(); 

     // add any item with name and type default value 
     items.Add("Name", default(String)); 
     items.Add("ID", default(int)); 
     items.Add("Age", default(int)); 
     items.Add("Email", default(String)); 

     var prompts=items.Select(
      (item, index) => String.Format("{0}: {{{1}}}", item.Key, index)); 

     format= 
      "Thank you for registration! Your Submitted information are: " 
      +Environment.NewLine 
      +String.Join(Environment.NewLine, prompts.ToArray()); 

     path="fileone.txt"; 
    } 

    static Dictionary<String, object> items; 
    static String format, path; 
} 

我建議爲完整的代碼做準備,而不要問重複的問題。