Как определить, существует ли файл в папке проекта? - PullRequest
3 голосов
/ 10 августа 2010

У меня есть коллекция изображений в папке моего проекта.

как определить, существует ли изображение в папке моего проекта? Я использую c #. Спасибо.

Ответы [ 4 ]

11 голосов
/ 10 августа 2010
if (System.IO.File.Exists("pathtofile"))
  //it exist
else
  //it does not exist

РЕДАКТИРОВАЛ МОЙ ОТВЕТ ПОСЛЕ КОММЕНТАРИИ ВОПРОСА:

Я скопировал код и изменил функцию выхода, это должно работать

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"; }

Это действительно будет работать, когда вашприложение развернуто

2 голосов
/ 12 августа 2010

Вопрос немного неясен, но у меня складывается впечатление, что вы идете по пути, по которому был установлен 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();
    }
  }

Это даст вам папку с изображениями, которая будет находиться везде, где находитсяустановлено.В среде разработчиков вам нужно будет создать каталог с изображениями при отладке и выпуске в пути приложения, потому что именно там VS помещает исполняемый файл.

0 голосов
/ 12 августа 2010

Использовать File.Exists(Path Here) Если вы используете временный путь, используйте Path.GetTempPath()

РЕДАКТИРОВАТЬ: Извините, тот же ответ, что и выше!

0 голосов
/ 10 августа 2010

вы можете использовать

string[] filenames = Directory.GetFiles(path);

, чтобы получить список файлов в папке и затем просматривать их, пока не найдете то, что ищете (или нет)

или вы можетепопробуйте открыть файл в блоке try catch, и если вы получите исключение, это означает, что файл не существует.

...