【问题标题】:Cannot show the content properly in looping无法在循环中正确显示内容
【发布时间】:2019-03-07 12:22:55
【问题描述】:

我编写了一个 c# 代码来检索所有文件名,方法是打印其中的一个信息。示例文件包含(file1.mht、file2.mht、file3.mht)。也许里面的包含是(aaaaaa,bbbbbb,cccccc)遵循文件的顺序。 输出示例: file1.mht aaaaaa file2.mht bbbbbb file3.mht cccccc

但我遇到的问题是它无法通过显示里面的内容来循环文件名。任何人都可以帮忙吗?目前的结果是它首先显示所有目录,并且只完成目录中第一个的工作。

using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Configuration;
using System.Collections.Specialized;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo mht_file = new DirectoryInfo(@"C:\Users\liewm\Desktop\SampleTest\");
            FileInfo[] Files = mht_file.GetFiles("*.mht");
            string str = "";
            string mht_text = "";
            string directory = "";
            string listInfo = "";

            foreach (FileInfo file in Files)
            {
                str = file.Name;
                directory = mht_file + str;
                Console.WriteLine(directory);
            }
            foreach (char filePath in directory)
            {
               //Here is my work to retrieve the data in the file

                Console.WriteLine("Names:" + str + "    " + "Component:" + component);
                Console.ReadKey();
            }


        }


    }

}

【问题讨论】:

  • foreach (char filePath in directory)filepath 中不是文件的路径,而是目录字符串中的一个字母
  • @xdtTransform 实际上我所有的文件路径都存储在上一步的目录变量中。
  • 其实..不! char filePathchar。一个 Unicode 字符。而string directory = "";,目录是一个字符串。这意味着对于字符串变量名目录中的每个 Unicode 字符的 for each 循环。
  • 并遍历字典,找到所有带有扩展名的文件并显示这些文件的内容正是副本中接受的答案。

标签: c# visual-studio


【解决方案1】:

根据您的问题,我了解到您想打印文件名后跟相同的内容,如果是这样,您可以尝试:

DirectoryInfo mht_file = new DirectoryInfo(@"C:\Users\liewm\Desktop\SampleTest\");
FileInfo[] Files = mht_file.GetFiles("*.mht");

foreach (FileInfo file in Files)
{
    // read the content of the file
    var content = File.ReadAllText(file.FullName);

    // from your question "Example out output: file1.mht aaaaaa"
    Console.WriteLine($"{file.Name} {content}");
}

【讨论】:

    【解决方案2】:

    只完成了目录中最后一个的工作。

    是的,那是因为您的目录变量是一个字符串string directory = "",它将被循环迭代的最后一个值覆盖。您宁愿存储在string[] 中,也不愿处理所有这些。

    foreach (FileInfo file in Files)
    {
      str = file.Name;
      directory = mht_file + str;
      Console.WriteLine(directory);
    }
    

    【讨论】:

    • 你能帮我改一下吗?我尝试但它显示错误。顺便说一句,我是 C# 新手
    【解决方案3】:

    请试试这个。

      foreach (FileInfo file in Files)
                {
                    str = file.Name;
                    directory += mht_file + str;
                    Console.WriteLine(directory);
                }
    

    【讨论】:

    • 它使文件文件路径名越来越长。
    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多