Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Проверка на существование файла


Автор: Miller_time 20.7.2007, 11:59
Как проверить существетели файл к примеру test.exe . И что бы на выходе выдовал  tue, false . 



Автор: HalkaR 20.7.2007, 11:59
File.Exists("test.exe")

Автор: RWander 3.8.2007, 20:59
а если усложнить задачу: необходимо найти директорию, в которой находится файл test.exe, если не найден, то возвращается null.
 smile 

Автор: anonym 3.8.2007, 21:24
Код

using System;
using System.IO;

class Program
{
    static string[] Find(string dir, string fileName)
    {
        return Directory.GetFiles(dir, fileName, SearchOption.AllDirectories);
    }

    static void Main(string[] args)
    {
        foreach (string fullFileName in Find(@"c:\check", "proga.txt"))
            Console.WriteLine(Path.GetDirectoryName(fullFileName));               
    }
}

Автор: RWander 3.8.2007, 21:35
anonym, респект! smile

Автор: mihryak 3.8.2007, 21:51
Код

    public static class FileFinder
    {
        public static string Find(string filename)
        {
            if (String.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException("filename");
            }

            if (Path.IsPathRooted(filename))
            {
                throw new ArgumentException("The filename cannot be a rooted path."); 
            }

            foreach (DriveInfo driveInfo in DriveInfo.GetDrives())
            {
                string result = FindInDirectory(driveInfo.RootDirectory, filename);
                if (!String.IsNullOrEmpty(result))
                {
                    return result;
                }
            }

            return null;
        }

        private static string FindInDirectory(DirectoryInfo directoryInfo, string filename)
        {
            string currentFileName = Path.Combine(directoryInfo.FullName, filename);
            if (File.Exists(currentFileName))
            {
                return currentFileName;
            }

            foreach (DirectoryInfo innerDirectoryInfo in directoryInfo.GetDirectories())
            {
                string result = FindInDirectory(innerDirectoryInfo, filename);
                if (!String.IsNullOrEmpty(result))
                {
                    return result;
                }
            }

            return null;
        }
    }


ПС. не тестировал

Добавлено через 5 минут и 52 секунды
не успел опять smile

Автор: RWander 3.8.2007, 22:02
Цитата(mihryak @  3.8.2007,  23:51 Найти цитируемый пост)
ПС. не тестировал

отлично работает, только, если файлов в системе несколько, то Find выдает только первый найденный.

Автор: mihryak 3.8.2007, 22:31
Цитата(RWander @  3.8.2007,  23:02 Найти цитируемый пост)
только первый найденный.

а я так и написал класс, чтобы только один первый находился smile
без этого условия он теряет всякие преимущества перед вариантом anonym

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)