如何读取多个文件txt c#

我正在尝试从 asmx Web 服务读取 2 个 txt 文件,原因是在文件 1 中我有随机字母,我必须从文件 2 中找到匹配的单词。但我不知道如何读取文件.


这是 webService。这就是我的做法。这个想法是读取第一个文件并获取其他人的路线,您阅读并将它们添加到列表中,但如果您有其他想法,我将不胜感激


namespace NewShoreApp

{        

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [System.ComponentModel.ToolboxItem(false)]


    public class WebService : System.Web.Services.WebService

    {


        [WebMethod]

        public string ReadData()

        {


            string[] lines = File.ReadAllLines(@"C:\Users\thoma\source\repos\NewShoreApp\NewShoreApp\Data\CONTENIDO.txt");


            List<string> list = new List<string>();


            foreach (var line in lines)

            {


                string data= File.ReadAllLines(line); //'Cannot implicitly convert type string[] to string'


                list.AddRange(data); //Cannot convert from string to system.collections.generic IEnumerable<string>

            }


                return ".";                        

            }

    }

}

这是我上传文件并将它们添加到数组中的控制器。


namespace NewShoreApp.Controllers

{

    public class HomeController : Controller

    {

        public ActionResult Index()

        {


            return View();

        }



        [HttpPost]

        public ActionResult Index(HttpPostedFileBase[] files)

        {


            if (ModelState.IsValid)

            {

                try

                {

                    foreach (HttpPostedFileBase file in files)

                    {

                        if (file != null)

                        {

                            var ServerPath = Path.Combine(Server.MapPath("~/Data"), Path.GetFileName(file.FileName));


                            file.SaveAs(ServerPath);

                        }

                    }                    

                    ViewBag.FileStatus = "File uploaded successfully.";

                }


                catch (Exception)   

                {


                    ViewBag.FileStatus = "Error while file uploading.";

                }


            }

        }


    }

}



交互式爱情
浏览 184回答 3
3回答

跃然一笑

出现问题是因为File.ReadAllLines()返回字符串数组( ),您可以使用方法string[]将其转换为:List<string>ToList()string[] lines = File.ReadAllLines(@"C:\Users\thoma\source\repos\NewShoreApp\NewShoreApp\Data\CONTENIDO.txt");List<string> list = lines.ToList();如果要读取同一文件夹中的多个文件并将所有内容添加到字符串列表中,请使用Directory.GetFiles()orDirectory.EnumerateFiles()并在使用之前迭代每个文件路径ReadAllLines():List<string> paths = Directory.EnumerateFiles(@"C:\Users\thoma\source\repos\NewShoreApp\NewShoreApp\Data\", "*.txt").ToList();foreach (string filePath in paths){&nbsp; &nbsp; string[] lines = File.ReadAllLines(filePath);&nbsp; &nbsp; list.AddRange(lines.ToList());}在多线程环境中,您应该考虑使用Parallel.ForEach与上述类似的设置foreach循环:List<string> paths = Directory.EnumerateFiles(@"C:\Users\thoma\source\repos\NewShoreApp\NewShoreApp\Data\", "*.txt").ToList();Parallel.ForEach(paths, current =>&nbsp;{&nbsp; &nbsp; string[] lines = File.ReadAllLines(current);&nbsp; &nbsp; list.AddRange(lines.ToList());});

泛舟湖上清波郎朗

并行读取多个 txt 文件的最佳方法是使用 ThreadPool。ThreadPool.QueueUserWorkItem(ReadFile, path);ReadFile 方法在这里public static void ReadFile(Object path){&nbsp;string content = File.ReadAllLines(@path)&nbsp;// do what you need&nbsp;}

海绵宝宝撒

如果问题是这一行:string&nbsp;data=&nbsp;File.ReadAllLines(line);&nbsp;//'Cannot&nbsp;implicitly&nbsp;convert&nbsp;type&nbsp;string[]&nbsp;to&nbsp;string'变量lines 是每行作为字符串的数组,您已经在上面调用过。如果您想要行列表,只需将行数组转换为列表:var&nbsp;list&nbsp;=&nbsp;new&nbsp;List<string>(data);
打开App,查看更多内容
随时随地看视频慕课网APP