You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何在Program.cs中调用自定义类封装的文本文件读取功能

解决方案

第一步:重构各自定义类的读取逻辑

你当前的books类里直接写了Main方法,这是C#控制台程序的入口方法,一个项目只能保留一个入口,所以你需要把每个类中的文件读取逻辑抽离为独立的公共方法,同时支持外部传入文件路径,不要硬编码路径在类内部。

重构后的books类参考代码:

using System;
using System.IO;
namespace ConsoleApplication4
{
    class books
    {
        // 封装读取books文件的公共静态方法,支持传入文件路径
        public static void ReadBooksFile(string filePath)
        {
            string line;
            try
            {
                // 用using语句自动释放StreamReader资源,不需要手动Close
                using (StreamReader sr = new StreamReader(filePath))
                {
                    line = sr.ReadLine();
                    while (line != null)
                    {
                        Console.WriteLine($"[books文件内容] {line}");
                        line = sr.ReadLine();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"读取books文件出错:{e.Message}");
            }
        }
    }
}

剩下的id、teachers、courses三个类也按照相同的规则修改,各自封装对应的公共读取方法即可,比如id类写ReadIdFile(string filePath)、teachers类写ReadTeachersFile(string filePath)、courses类写ReadCoursesFile(string filePath)。

第二步:在Program.cs中调用各方法

你只需要在Program.cs的入口Main方法中,先向用户收集四个文件对应的路径,再依次调用各个类的读取方法即可,示例代码如下:

using System;
using System.IO;
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 依次向用户获取四个文件的路径
                Console.WriteLine("请输入books文件的完整路径:");
                string booksPath = Console.ReadLine().Trim();
                if(!File.Exists(booksPath)) { Console.WriteLine("books文件不存在,请检查路径"); return; }
                
                Console.WriteLine("请输入id文件的完整路径:");
                string idPath = Console.ReadLine().Trim();
                if(!File.Exists(idPath)) { Console.WriteLine("id文件不存在,请检查路径"); return; }
                
                Console.WriteLine("请输入teachers文件的完整路径:");
                string teachersPath = Console.ReadLine().Trim();
                if(!File.Exists(teachersPath)) { Console.WriteLine("teachers文件不存在,请检查路径"); return; }
                
                Console.WriteLine("请输入courses文件的完整路径:");
                string coursesPath = Console.ReadLine().Trim();
                if(!File.Exists(coursesPath)) { Console.WriteLine("courses文件不存在,请检查路径"); return; }

                // 调用各封装好的读取方法
                books.ReadBooksFile(booksPath);
                id.ReadIdFile(idPath);
                teachers.ReadTeachersFile(teachersPath);
                courses.ReadCoursesFile(coursesPath);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"程序运行出错:{ex.Message}");
            }
            
            Console.WriteLine("所有文件读取完成,按任意键退出");
            Console.ReadKey();
        }
    }
}

可选优化点

  • 如果每个类的读取逻辑差异很小,可以抽取公共父类或者通用读取方法减少重复代码
  • 可以把读取到的每行内容解析为对应类的实例存储,方便后续业务逻辑调用

内容的提问来源于stack exchange,提问作者safdasfasfasfa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:54:03