У меня есть коллекция изображений в папке моего проекта.Как определить, существует ли файл в папке проекта?
Как определить, существует ли изображение в папке проекта? Я использую C#. Благодарю.
У меня есть коллекция изображений в папке моего проекта.Как определить, существует ли файл в папке проекта?
Как определить, существует ли изображение в папке проекта? Я использую C#. Благодарю.
if (System.IO.File.Exists("pathtofile"))
//it exist
else
//it does not exist
EDITED МОЙ ОТВЕТ ПОСЛЕ комментарию ВОПРОС:
Я скопировал код и изменил функцию выходов, это должно работать
string type = Path.GetExtension(filepath);
string path = @"image/" + type + ".png";
//if(System.IO.File.Exists(path)) I forgot to use the full path
if (System.IO.File.Exists(Path.Combine(Directory.GetCurrentDirectory(), path)))
{ return path; }
else
{ return @"image/other.png"; }
Это будет действительно работать, когда развертывается приложение
Альтернативой является использование «FileInfo», если вам также нужны временные метки и другая основная информация. –
@Steven: это правильно, если вы хотите, чтобы информация о файле, но File.Exists имела лучшую производительность, если вам нужно только знать, существуют ли существующие –
Да, поэтому я предложил это в качестве альтернативы, если вы также собираетесь нужна дополнительная информация, а не как общая замена. –
можно использовать
string[] filenames = Directory.GetFiles(path);
, чтобы получить список файлов в папке, а затем перебирать их, пока не найдете то, что ищете (или нет)
или вы могли бы попытаться открыть файл в попытке поймать блока и если вы получите исключение означает, что файл не существует.
Это не очень хорошие идеи. –
Не так эффективно, как методы 'File.Exists' или' FileInfo.Exists'. – tdammers
Действительно ли это менее эффективно Вы бы использовали его в ленивом стиле оценки или загрузили файлы при запуске и сохранили список. – 2010-08-12 08:45:20
Использование File.Exists(Path Here)
Если вы используете применение пути временный Path.GetTempPath()
EDIT: К сожалению, такой же ответ, как и выше!
Вопрос немного неясен, но создается впечатление, что вы после пути, на котором был установлен exe?
class Program
{
static Dictionary<string, string> typeImages = null;
static string GetImagePath(string type)
{
if (typeImages == null)
{
typeImages = new Dictionary<string, string>();
string appPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = Path.Combine(appPath, @"image/");
foreach (string file in Directory.GetFiles(path))
{
typeImages.Add(Path.GetFileNameWithoutExtension(file).ToUpper(), Path.GetFullPath(file));
}
}
if (typeImages.ContainsKey(type))
return typeImages[type];
else
return typeImages["OTHER"];
}
static void Main(string[] args)
{
Console.WriteLine("File for XLS="+GetImagePath("XLS"));
Console.WriteLine("File for ZZZ=" + GetImagePath("ZZZ"));
Console.ReadKey();
}
}
Это даст вам папку с изображениями, которая будет находиться там, где установлен exe. В среде dev вам нужно создать dir-образ для отладки и выпуска в пути к приложению, потому что именно там VS ставит exe.
Не могли бы вы точно указать, когда вам нужно их обнаружить? Мы говорим об этом перед компиляцией или при скомпилированной программе? –
У меня есть список элементов, данные привязываются к списку файлов в моей локальной папке Z, которые состоят из различных файлов, таких как .doc, .xls и т. Д. В моих файлах проекта (решения) у меня есть папка с сборка файла изображения, а именно doc.png, xls.png и т. д. Теперь я хочу спеть файлы в папке Z, определить тип файла и попытаться вернуться как: string type = Path. GetExtension (FilePath); строка path = @ "image /" + type + ".png"; if (Exist (путь)) { Обратный путь; } else { return @ "image/other.png"; } потому что файлы находятся в папке моего решения, поэтому я не уверен, что это будет работать после развертывания. – VHanded