だから私は filenames.avi のこのリストを持っています。それぞれが異なるディレクトリ、パスから来ています。それらのリストのtxtファイルがあります。
それらがすべて同じフォルダーにある場合は簡単ですが、それぞれが1つのフォルダーにある場合は、ファイルごとにディレクトリパスを変更する必要があります。
ありがとうございました
System.IO.Path
クラスを使用したいと思うでしょう。はPath.GetDirectoryName
、ディレクトリ名を返します (末尾の「\」文字なし)。
Path
このクラスには、 や など、他にも便利なメソッドがありGetFileName
ますGetExtension
。
メソッドを使用Directory.GetFiles()
してサブディレクトリを検索できます。制限されたフォルダーにアクセスすると例外が発生するため、検索を絞り込むことをお勧めしますが、通常、次のような方法を使用して、ファイル名の最初の出現へのパスを返すか、 を返しnull
ます。
public string SearchFileSystem(string filename)
{
string [] files = null;
try
{
files = Directory.GetFiles("C:\\", filename, SearchOption.AllDirectories);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return files==null?null:files.FirstOrDefault();
}
これにより、ファイル名が得られます
fullPath = Path.GetFullPath(file);
fileName = Path.GetFileName(fullPath);
これにより、ファイルパスが得られます
shortPath = fullPath.Substring(0, inputText.LastIndexOf("\"));
var sr = new StreamReader("filelist.txt");
while(!sr.EOF)
{
string[] ListFiles = Directory.GetFiles("D:\movies\",
sr.ReadLine()/*your file name is the search pattern*/,
SearchOption.AllDirectories);
if(ListFIles.Count > 0)
{
//File Found
foreach(var f in ListFiles)
{
string fullPath = Path.GetFullPath(file);
string fileName = Path.GetFileName(fullPath);
}
}
}