为了账号安全,请及时绑定邮箱和手机立即绑定

如何读取多个文件txt c#

如何读取多个文件txt c#

C#
交互式爱情 2022-10-23 16:29:32
我正在尝试从 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.";                }            }        }    }}
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

出现问题是因为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)

{

    string[] lines = File.ReadAllLines(filePath);


    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 => 

{

    string[] lines = File.ReadAllLines(current);


    list.AddRange(lines.ToList());

});


查看完整回答
反对 回复 2022-10-23
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

并行读取多个 txt 文件的最佳方法是使用 ThreadPool。


ThreadPool.QueueUserWorkItem(ReadFile, path);

ReadFile 方法在这里


public static void ReadFile(Object path)

{

 string content = File.ReadAllLines(@path)

 // do what you need 

}


查看完整回答
反对 回复 2022-10-23
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

如果问题是这一行:

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

变量lines 是每行作为字符串的数组,您已经在上面调用过。

如果您想要行列表,只需将行数组转换为列表:

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


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信