Работа с файлами и директориями c#

Для работы с файлами и директориями в c# есть такие классы — System.IO.Path, System.IO.File, System.IO.Directory. Приведу примеры использования некоторых методов этих классов, на мой взгляд самых необходимых.

  1. Получим директории расположения файла
    string path = @"c:\\site\path-to-files\file.txt";
     string dirName = Path.GetDirectoryName(path);
    // dirName: c:\\path-to-files
    

    Метод Path.GetDirectoryName() вернет такое же значение если передать такие пути c:\\site\path-to-files\ или c:\\site\path-to-files

  2. Получим имя файла
    string fileName = Path.GetFileName(path);
    // fileName: file.txt
    
  3. Получим имя файла без разрешения
    string fileNameWE = Path.GetFileNameWithoutExtension(path);</pre>
    // fileNameWE: file
    
  4. Получим разрешение файла
    string fileExt = Path.GetExtension(path);
    // fileExt: .txt
    
  5. Проверим есть ли расширение у файла
    bool hasExt = Path.HasExtension(path);
    // hasExt: true
    
  6. Проверим является ли путь абсолютным
    bool isAbs = Path.IsPathRooted(path);
    // isAbs: true
    

    Метод Path.IsPathRooted() вернет true если передать такой путь
    \site\path-to-files\file.txt

  7. Получим базовую директорию сайта
    string baseDir = AppDomain.CurrentDomain.BaseDirectory;
    // baseDir c:\\site\
    
  8. Получим полный полный путь к файлу
    path = AppDomain.CurrentDomain.BaseDirectory + @"path-to-files\file.txt";
    // path: c:\\site\path-to-file\file.txt
    

    Или если доступен HttpContext:

    path = HttpContext.Current.Server.MapPath(@"path-to-files\file.txt");
    

    Метод HttpContext.Current.Server.MapPath вернет тот же результат, если передать такие пути: \path-to-files\file.txt, path-to-files/file.txt или /path-to-files/file.txt

  9. Получим разделитель директорий
    string pathSep = Path.DirectorySeparatorChar;
    // pathSep: \
    
  10. Получим полный путь файла зная имя директории и имя файла
    path = dirName + Path.DirectorySeparatorChar + fileName;
    

    Или используя специальный метод:

    path = Path.Combine(dirName, fileName);
    
  11. Изменим расширение файла
    string imagePath = Path.ChangeExtension(path, ".jpg");
    // imagePath: c:\\site\path-to-files\file.jpg
    
  12. Получим список файлов
    string[] files = Directory.GetFiles(dirName);
    // отсеиваем по шаблону, выберем только текстовые файлы
    files = Directory.GetFiles(dirName, @".\txt$");
    

    Метод Directory.GetFiles() возвращает полные пути к файлам

  13. Получим список директорий
    string[] dirs = dirs = Directory.GetDirectories(dirName);
    

    Метод Directory.GetDirectories() возвращает полные пути к директориям

  14. Проверяем существование файла
    bool isExisFile = File.Exists(path);
    
  15. Проверяем существование директории
    bool isExisDir = Directory.Exists(dirName);
    
  16. Создаем пустой файл
    File.Create(path).Close();
    
  17. Создаем файл с содержимым из строки
    File.WriteAllText(path, "test file");
    
  18. Создаем файл из массива байтов
    File.WriteAllBytes(path, new byte[10]);
    
  19. Копируем файл
    File.Copy(path, otherPath);
    
  20. Перемещаем файл
    File.Move(path, otherPath);
    
  21. Удаляем файл
    File.Delete(path);
    
  22. Создаем директорию
    Directory.CreateDirectory(dirName);
    

    Метод Directory.CreateDirectory() создает все вложенные папки

  23. Для копирования директории пишем свой метод
    public static void CopyDir(string FromDir, string ToDir)
    {
        Directory.CreateDirectory(ToDir);
    
        foreach (string fullName in Directory.GetFiles(FromDir))
            File.Copy(fullName, ToDir + "\\" + Path.GetFileName(fullName));
    
        foreach (string fullName in Directory.GetDirectories(FromDir))
            CopyDir(fullName, ToDir + "\\" + Path.GetFileName(fullName));
    }
    
  24. Перемещаем директорию
    Directory.Move(dirName, otherDirName);
    
  25. Удаляем директорию
    Directory.Delete(dirName);
    
  26. Получим размер файла
    long fileSize = new FileInfo(fileName).Length;
    

Работа с файлами и директориями c#: Один комментарий

  1. Для начинающих интересно было бы если б примеры были бы законченными, а так вырванные из контекста методы, которые для начинающих пустой звук.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>