2012-02-24 34 views
23

Tôi làm cách nào để có được tên đầy đủ?Cách tìm tệp theo tên từng phần của nó?

Ví dụ:

Tôi có một file có tên 171_s.jpg được lưu trữ trên đĩa cứng.

Tôi cần tìm tệp theo tên từng phần của nó, tức là 171_s và nhận tên đầy đủ.

Làm cách nào để triển khai tính năng này?

Trả lời

45

Dưới đây là một ví dụ sử dụng GetFiles():

static void Main(string[] args) 
{ 
    string partialName = "171_s"; 
    DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(@"c:\"); 
    FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + partialName + "*.*"); 

    foreach (FileInfo foundFile in filesInDir) 
    { 
     string fullName = foundFile.FullName; 
     Console.WriteLine(fullName); 
    }  
} 
+0

Điều này rất hữu ích cho tôi, nhưng tôi cần chuyển đổi FileInfo rray vào một mảng chuỗi và thấy rằng sau đây làm việc tốt hơn cho rằng: string [] filesInDir = Directory.GetFiles (@ "c: \", "*" + partialName + "*. *"); – hvaughan3

+1

'EnumerateFiles' là phương thức ưa thích những ngày này – MikeT

+0

@ hvaughan3 FileInfo có tên và thuộc tính fullname sẽ cung cấp cho bạn thêm nhiều tùy chọn khác, bạn sẽ tốt hơn với infos hơn là chuyển đổi thành chuỗi – MikeT

7

Bạn có thể sử dụng System.IO.Directory.GetFiles()

http://msdn.microsoft.com/en-us/library/ms143316.aspx

public static string[] GetFiles(
    string path, 
    string searchPattern, 
    SearchOption searchOption 
) 

đường Loại: System.String Thư mục để tìm kiếm.

tìm kiếmPattern Loại: System.String Chuỗi tìm kiếm khớp với tên tệp trong đường dẫn. Tham số không thể kết thúc trong hai dấu chấm ("..") hoặc chứa hai dấu chấm ("..") theo sau là DirectorySeparatorChar hoặc AltDirectorySeparatorChar, cũng như không chứa bất kỳ ký tự nào trong InvalidPathChars.

searchOption Loại: System.IO.SearchOption Một trong những giá trị SearchOption sẽ chỉ định xem hoạt động tìm kiếm nên bao gồm tất cả các thư mục con hoặc chỉ mục hiện hành.

2

Bạn có thể làm điều đó như thế này:

.... 

List<string> _filesNames; 

foreach(var file in _directory) 
{ 
    string name = GetFileName(file); 
    if(name.IndexOf(_partialFileName) > 0) 
    { 
     _fileNames.Add(name); 
    } 
} 
.... 
6

Câu trả lời là được đã được đăng, tuy nhiên đối với một sự hiểu biết dễ dàng ở đây là mã

string folderPath = @"C:/Temp/"; 
DirectoryInfo dir= new DirectoryInfo(folderPath); 
FileInfo[] files = dir.GetFiles("171_s*", SearchOption.TopDirectoryOnly); 
foreach (var item in files) 
{ 
    // do something here 
} 
Các vấn đề liên quan