2012-01-05 4 views
-1

Windows XPを使用しています。私は最長のパス(パスの長さ+ファイル名の長さ)を持つファイル(フォルダD:\ Test)を見つける必要があります。どのようにC#を使ってこれを見つけることができますか?C#で最長のファイルパスを一覧表示する

これを確認するには、dir、tree ectのようなコマンドはありますか? T-SQLを使ってどのようにしたらいいですか?

注:xp_cmdshellをディレクトリ構造を取得するにはFRMのT-SQLを使用することができます

おかげで

Lijo

+2

SQL? SQLはあなたのために何をしますか?これはデータベースで使用されます。 – RvdK

+1

なぜあなたはこれをしたいですか?宿題? –

+0

xp_cmdshellを使用してfrm T-SQLを使用してディレクトリ構造 – Lijo

答えて

7

T-SQLでこれを行う方法。しかし、私はなぜそれをしたいのか分かりません。

+0

いいです、私は本当にそのラムダのものにもっと入る必要があります。 – Feroc

+0

@Lijo、ディレクトリにファイルはありますか? 'FirstOrDefault()'は、 'GetFiles()'によって返されたファイルがなければnullを返します。十分な権限がありますか? – Stefan

+0

@Lijo、はい、 'SearchOption.AllDirectories'を使用してください。私の答えを更新しました。 – Stefan

0

SQLは、これとは全く関係ありません。 反復これらのファイル名を介してすべてのファイルを取得し、長さが以前に発見されたものを、次に大きいかどうかを確認するためにSystem.IO名前空間からDirectoryInfoクラスhere

+0

xp_cmdshellを使用して、ディレクトリ構造を取得するためにT-SQLを使用することができます – Lijo

+0

多分サーバー側にあります。明らかにOPが探しているものではありません。 -1のおかげで。 – Shai

0

使用DirectoryInfoクラスについて読んで始めます。

0

このような何かがそれを行います。

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; 
} 

それだけで最初の最も長いファイル名を返しますが、あなたのアイデアを得ます。あなたはこのPowerShellスクリプトを使って出力を検証することができ

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

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

私は知らないあなたが最も長い名前のファイルを取得するには、次のスニペットを使用することができますC#を使用して

関連する問題