2015-02-04 3 views
-2

Я использую следующий код, чтобы взять все файлы из каталога и поиска конкретного файла:GetFiles с пробелами в имени файла

string [] fileEntries = Directory.GetFiles("C:\\uploads"); 
foreach(string fileName in fileEntries) 
    if (fileName.Contains(name)) 
     PicturePath = fileName; 

где «имя» является строкой, которую я получаю от БД.

Кажется, что это работает, но если мой файл содержит пробел в fileName, он принимает только первую строку из fileName, которая является первой строкой перед пробелом, игнорируя th rest. Как я могу взять полное имя файла (так же как и путь к этому файлу).

Например: у меня есть файл с именем «ALEXANDRU ALINA.jpg» внутри загрузок и у меня есть строка «ALEXANDRU ALINA». Когда я запускаю этот код (записывая PicturePath), он отображает только «ALEXANDRU».

+2

Что вы подразумеваете под словом «требуется только первая строка»? Короткая, но полная программа, с выборкой ввода, ожидаемым выходом и фактическим выходом, сделала бы это * намного понятным. –

+0

Отредактировал мой вопрос. Надеюсь, теперь ясно. –

+0

Не совсем - мы не знаем, как вы его показываете, или что-то в этом роде. 'Directory.GetFiles()' * будет * давать полные имена файлов, в том числе пробелы ... –

ответ

0

Это может быть то, что вы ищете:

string[] fileEntries = Directory.GetFiles("C:\\uploads"); 

foreach (string fileName in fileEntries) 
{ 
    FileInfo fi = new FileInfo(fileName); 
    if (fi.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase)) PicturePath = fileName; 
} 

Что вы пытаетесь сделать, это найти имя целевого файла в пределах всего пути, но этот метод вы используете может привести к ошибкам (что, если name содержится в пределах пути к папке?). Используя класс System.FileInfo и его свойство Name, то есть только имя файла (не полный путь к файлу, который включает в себя содержащий путь к папке), вы не будете бесполезно искать какую-либо часть пути к папке.

+0

Но что, если я хочу получить все имя_файла (включая .extenstion) и не идти по пути. –

+0

@RaduStanescu - свойство 'Name' включает расширение. –

+0

Мне это удалось, но вместо этого, если вы описали, я использовал if (fi.Name.ToString(). Содержит (имя)) PicturePath = имя_файла. Кажется, что хорошо работает. благодаря –