【问题标题】:Streamreader doesn't read data in text file C#Streamreader 不读取文本文件 C# 中的数据
【发布时间】:2013-04-20 02:04:09
【问题描述】:

我有两个类“allmethods.cs”和“caller.cs”

我在“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();
    }
}

非常感谢。等待您的答复。

【问题讨论】:

  • ReadingMethod 中有输出而不是行

标签: c# class streamreader readline


【解决方案1】:

您似乎没有设置变量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

希望对你有帮助。

【讨论】:

  • 谢谢你的回答,那是我的错:S 但它仍然只阅读第一行。我希望它读取文本文件中的全部数据。
  • 您可以使用 ReadToEnd 代替 ReadLine
  • 或使用 File.ReadAllText([FilePah])
  • @JFallz:我已经向您展示了我的回答:var textFromFile=String.Join(Environment.NewLine, File.ReadAllLines(path));
【解决方案2】:

这是您一系列问题的整体解决方案:

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;
}

我建议准备完整的代码,不要问重复的问题。

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多