Работа с файлами и директориями 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;
    
По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Делаем водяной знак на картинке (c#, .net)

Нанесем несколько раз картинку watermark на другую картинку. public void DrawWatermark(string watermarkImagePath, System.Drawing.Image image) { using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) Read more

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

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