2017-10-12 15 views
-2

私は、選択したドライブからすべてのテキストファイルを取得するプロジェクトを作っています。私はすべてのテキストファイルの名前をパスに沿って取得していますが、必要なのは名前だけです。私は拡張子を取得したくない、私が望むのはそのテキストファイルの名前です。私はインターネット上のすべてを検索しましたが、正解を見つけることができませんでした。これらの名前をリストボックスにすべて格納しています。ここに私のコードです:全パスの代わりにGEtのみのファイル名

String[] dir1 = System.IO.Directory.GetDirectories(@"F:\"); 
for (int i = 0; i < dir1.Length; i++) 
{ 
    FileAttributes attributes = File.GetAttributes(dir1[i]); 

    if ((attributes & FileAttributes.Hidden) != fileAttributes.Hidden) 
    { 
     string folder = @""+ dir1[i]; 
     txtfiles = Directory.GetFiles(folder, "*.txt"); 
     listBox1.Items.AddRange(txtfiles); 
    } 
} 

パスと拡張子全体ではなく、名前だけを取得する方法はありますか?

+2

'のような何かを行うことができSystem.IO.Path.GetFileNameWithoutExtension()

を見てみましょう。あなたのタイトル+「C#」をGoogleに提供すると290万ヒット – Plutonix

答えて

1

は、あなただけの唯一のバックパスからファイル名を抽出しますPath.GetFileNameメソッドを使用する必要があるので、あなたは何ができるかと同じように、ファイル名のコレクションを取得するためにtxtfilesをプロジェクトですあなただけがDすることができ、その後拡張子のないファイルの名前が必要な場合も

listBox1.Items.AddRange(txtDirectory.EnumerateFiles(folder, "*.txt") 
           .Select(file=>Path.GetFileName(file)) 
         ); 

:あなただけのようになり、メモリのパフォーマンスに良いだろうEnumerateFilesメソッドを使用することができ、実際にそれらを読んでいない、パスが必要oとしてValuator answerが提案されています。

1

は、あなたは私がすべてのinternet`考えにくい上で検索しました

txtfiles = Directory.GetFiles(folder, "*.txt"); 
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList(); 
関連する問題