【问题标题】:Listing longest file path with C#用 C# 列出最长的文件路径
【发布时间】:2012-01-05 07:44:29
【问题描述】:

我使用的是 Windows XP。我需要找出具有最长路径(路径长度 + 文件名长度)的文件(在文件夹 D:\Test 中)。我们如何使用 C# 找出这一点?

有没有类似 dir、tree 等的命令来验证这一点? 知道如何使用 T-SQL 来实现吗?

注意:xp_cmdshell可以使用frm T-SQL来获取目录结构

谢谢

李乔

【问题讨论】:

  • SQL? SQL 会为您做什么?它与数据库一起使用。
  • 为什么要这样做?家庭作业?
  • @Lijo,仅仅因为你可以用 SQL 来做这并不意味着你应该:) 有点像用冰淇淋勺建造汽车。嗯,是的,我猜你可以做到...但是为什么呢?
  • @jb。我可以保留冰淇淋吗?

标签: c# .net command


【解决方案1】:

使用 c# 可以使用以下 sn-p 检索名称最长的文件:

System.IO.Directory
  .GetFiles("D:\\Test", "*", SearchOption.AllDirectories)
  .OrderByDescending(p => p.Length)
  .FirstOrDefault()

您可以使用此 PowerShell 脚本验证输出:

Get-ChildItem | % { $_.FullName } | Sort-Object -Descending -Property Length

我不知道如何在 T-SQL 中做到这一点。但是,我不知道为什么要这样做。

【讨论】:

  • 很好,我真的需要更多地了解 lambda-stuff。
  • @Lijo,目录中有文件吗?如果GetFiles() 没有返回文件,FirstOrDefault() 将返回 null。你有足够的权限吗?
  • @Lijo,是的,使用SearchOption.AllDirectories。更新了我的答案。
  • @Lijo,我的错:GetFiles(string, string, SearchOption) 其中第二个参数是 searchPattern。 "*" 将匹配所有项目。
  • 谢谢.. String strings = System.IO.Directory.GetFiles("D:\\TFSLocation", "*", SearchOption.AllDirectories).OrderByDescending(p => p.Length).FirstOrDefault ();我没有使用 powershell 的权限。还有其他命令吗??
【解决方案2】:

SQL 与此完全无关。首先阅读DirectoryInfohere

【讨论】:

  • xp_cmdshell可以使用frm T-SQL获取目录结构
  • 可能在服务器端。这显然不是 OP 想要的。感谢 -1。
【解决方案3】:

使用 System.IO 命名空间中的 DirectoryInfo 类来获取所有文件 遍历这些文件名并检查长度是否大于之前找到的长度。

【讨论】:

    【解决方案4】:

    这样就可以了:

    private static string getLongestFilename(string path)
    {
        int maxLength = 0;
        string longestFile = string.Empty;
        DirectoryInfo di = new DirectoryInfo(path);
        foreach (FileInfo fi in di.GetFiles())
        {
            if (fi.FullName.Length > maxLength)
            {
                longestFile = fi.FullName;
                maxLength = fi.FullName.Length;
            }
        }
        return longestFile;
    }
    

    它只会返回第一个最长的文件名,但你明白了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2011-01-14
      • 2017-04-23
      • 2011-03-17
      • 2017-06-03
      • 2017-05-23
      • 1970-01-01
      相关资源
      最近更新 更多