Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы и папки, Файлы и папки 
V
    Опции темы
ziga
Дата 3.5.2007, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Утро доброе!
У меня несколько простых вопросов и хотелось бы увидеть по ним конкретные примеры:

1. Есть путь C:\test\test1\test2\ - тут мне надо создать папку test3 как проверить есть в этом каталоге эта папка или нет легко, а как проверить есть ли вообще все эти папки \test\test1\test2?
2. Как получить количество вложенных папок в папке C:\test\?
3. Как создать временный файл, который при закрытии программы удалялся?
4. И опять повторюсь, как создать ярлык?
Спасибо

PM MAIL   Вверх
emmanuil
Дата 3.5.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Directory.CreateDirectory("путь");
Directory.Exists("путь")
Directory.GetDirectories("путь").Length - количество с поддерикториями
Directory.GetDirectories("путь", "*.*", SearchOption.AllDirectories).Length - количество без  поддерикторий
PM MAIL   Вверх
ziga
Дата 3.5.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Цитата(emmanuil @ 3.5.2007,  08:28)
Directory.CreateDirectory("путь");
Directory.Exists("путь")
Directory.GetDirectories("путь").Length - количество с поддерикториями
Directory.GetDirectories("путь", "*.*", SearchOption.AllDirectories).Length - количество без  поддерикторий

Ок спасибо со 2 вопросом всё понятно.

Вопрос только вот в чём используя Directory.Exists("C:\test\test1\test2\test3") он мне вернёт false если не будет папки test3 а вот если не будет папки test1?
Приведу свой пример:
If (Directory.Exists("C:\test\test1\test2\test3"))
    Console.WriteLine(“Такая папка уже существует”);
Else
    Directory.CreateDirectory("C:\test\test1\test2\test3");

Вот у меня проблема такая, что если вообще такова пути не существует, что у меня нет всех этих папок то они же все и создадутся вместе с test3.
А мне надо включить в проверку если таких папок нет выводить ошибку как это сделать проще всего? У меня есть 1 решение разделять путь используя substr() “\” и проверять каждую папку отдельно, у каво есть ещё какие решения?

PM MAIL   Вверх
emmanuil
Дата 3.5.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Без разницы! если нет хоть одной папки независимо в конце или в начале, то вернет false.
"C:\test\test1\test2\test3" - это не совсем набор папок, это дерево, а C:\test\test1\test2\test3 - это полное имя test3, а test2 является родителем для test3 и так далее.
Поэтому указывая так Directory.CreateDirectory("C:\test\test1\test2\test3") проверка будет проходить до последнего элемента дерева, тоесть до test3, а если во время проверки нет допустим test2, то значит false. Это само просто! Зачем тебе заморачиваться на substring'и?
А вот насчет ярлыков я не пробовал.

Добавлено через 1 минуту и 16 секунд
Цитата(emmanuil @  3.5.2007,  07:38 Найти цитируемый пост)
Поэтому указывая так Directory.CreateDirectory("C:\test\test1\test2\test3") 

 прошу прощения, не Directory.CreateDirectory, а Directory.DirectoryExists
PM MAIL   Вверх
ziga
Дата 3.5.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Всё теперь понятно и по этому вопросу, спасибо.
А с времеными файлами не работал ? 
PM MAIL   Вверх
emmanuil
Дата 3.5.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



скорее всего тебе придется самому создавать файл и удалять его. Но может есть какие то средства которых я незнаю, которые позволяют об этом не заботиться.
Просто создашь с какимнибудь именем ~filename, сделаешь скрытым(если надо) и тд. а потом удалишь. Другого способа я незнаю. есть еще FileAttributes.Temporary - это указывает на то, что файл временный, может поможет тебе.
PM MAIL   Вверх
ziga
Дата 3.5.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Цитата(emmanuil @  3.5.2007,  09:50 Найти цитируемый пост)
сть еще FileAttributes.Temporary - это указывает на то, что файл временный, может поможет тебе.


ок посмотрю, но я точно знаю что есть вроди какая то опция при создании файла где указываешь что этот файл существует пока работает программа - я уже так делал вот только забыл как  smile 
PM MAIL   Вверх
emmanuil
Дата 3.5.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



 smile нашел!!!
File.Create(@"C:\dir\~$tmp.txt", 1, FileOptions.DeleteOnClose);

и все!!!
PM MAIL   Вверх
ziga
Дата 3.5.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Цитата(emmanuil @  3.5.2007,  10:03 Найти цитируемый пост)
File.Create(@"C:\dir\~$tmp.txt", 1, FileOptions.DeleteOnClose);

УРА!  smile 
Остались ярлыки ))
PM MAIL   Вверх
ziga
Дата 5.5.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Родился новый вопрос, как скопировать папку со всем её содержимым? Как файл копировать я знаю File.Copy почему то аналогичной функции для Directory нет.
PM MAIL   Вверх
archeg
Дата 5.5.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Цитата(ziga @ 5.5.2007,  14:53)
Родился новый вопрос, как скопировать папку со всем её содержимым? Как файл копировать я знаю File.Copy почему то аналогичной функции для Directory нет.

Код

 public void cCopyDir(string DirToCopy, string DirCopyTo, bool Overwrite)
        {
            if (!Directory.Exists(DirCopyTo)) Directory.CreateDirectory(DirCopyTo);
            DirectoryInfo di = new DirectoryInfo(DirToCopy);
            foreach (FileInfo fi in di.GetFiles())
            {
                fi.CopyTo(DirCopyTo+"\\"+fi.Name, Overwrite); 
            }
            foreach (DirectoryInfo dInfo in di.GetDirectories())
            {
                cCopyDir(dInfo.FullName, DirCopyTo + "\\" + dInfo.Name, Overwrite);
            }

        }


Это сообщение отредактировал(а) archeg - 5.5.2007, 17:29


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
ziga
Дата 6.5.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Спасибо!
PM MAIL   Вверх
Experimenter
Дата 8.5.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



По второму вопросу смотри, что нашел в Object Browser:

public static string GetTempFileName()
    Member of System.IO.Path

Summary:
Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file.

Returns:
A System.String containing the full path of the temporary file.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.