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


Автор: santilaas 8.12.2007, 20:00
пишу на C# в VS2005 для Pocket PC
Привет всем!
ситуация такая: мне нужно считывать данные из XML файла - его содержимое я помещаю в Dataset. 
вопрос: как сделать так, чтобы можно было только указывать директорию, и чтобы при этом осуществлялся поиск файла в этой директории,  - если XML-файл есть в этой директории, то он и подгружается?
Заранее спасибо  

Автор: fantast 10.12.2007, 15:09
надеюсь, что понял тебя верно, такая конструкция подойдет?

Код

string[] XmlFiles = Directory.GetFiles(path, "*.xml");

if (XmlFiles.Length == 0)
        throw new Exception("the path is bad");

..........


дальше твой код с испольвованием для адреса xml скажем XmlFiles[0]

Автор: santilaas 11.12.2007, 02:21
fantast, отличное решение - вроде просто и то, что нужно.
Только вот еще такой вопрос - 
а если у меня такое - каждый файл имеет одинаковую маску - 

"РР12.01.2007.xml" - где 
РР - присутствуют в каждом файле,
12.01.2007 - дата формирования файла 

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

Автор: Wizard_Memfis 11.12.2007, 10:28
Почему нельзя вытащить дату с имени файла и потом уже сравить?Ну или регулярными выражениями мона попробовать, но тут я не подскажу! smile 

Автор: fantast 11.12.2007, 13:15
попробуй это

Код


            string[] XmlFiles = Directory.GetFiles(path, "*.xml");
            
            if (XmlFiles.Length == 0)
                throw new Exception("the path is bad");

            DateTime myTime = DateTime.MinValue;

            foreach (string file in XmlFiles)
            {
                string temp = file.Remove(0, 2); //remove 'PP'
                string[] date = temp.Split('.');

                DateTime time = new DateTime(int.Parse(date[2]), int.Parse(date[1]), int.Parse(date[0]));
                if (time > myTime)
                    myTime = time;
            }

            //using myTime..


конечно можно использовать и регулярные выражения, но в этом случае мне кажеться это ничего не изменит и код останеться примерно таким же

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