본문 바로가기
프로그래밍/C#

[C#] 특정 폴더에서 이미지나 동영상 파일들 가져오기 (MediaUtility)

by tempus 2021. 7. 23.
반응형

MediaUtility 클래스

특정 폴더에 접근하여 이미지 파일이나 동영상 파일을 가져와 사용하는 경우가 많아서 따로 쉽게 클래스로 구현하여 유틸리티처럼 사용하기 위해 만들었습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace File.Utility
{
    public class MediaUtility
    {
        #region Property
        /// <summary>
        /// 특정 폴더의 미디어 파일들을 처리하기 위한 클래스 
        /// </summary>
        #endregion

        #region Public Method

        //이미지 파일
        public static List<string> GetImageFiles(string directoryPath)
        {
            List<string> imageFileList = new List<string>();

            foreach (string fileName in Directory.GetFiles(directoryPath))
            {
                if (Regex.IsMatch(fileName, @".jpg|.png|.bmp|.JPG|.PNG|.BMP|.JPEG|.jpeg$"))

                {
                    imageFileList.Add(fileName);
                }

            }

            return imageFileList;
        }

        //동영상 파일
        public static List<string> GetVideoFiles(string directoryPath)
        {
            List<string> videoFileList = new List<string>();

            foreach (string fileName in Directory.GetFiles(directoryPath))
            {
                if (Regex.IsMatch(fileName, @".avi|.mkv|.mp4|.AVI|.MP4|.MKV|.MPG|.mpg$"))

                {
                    videoFileList.Add(fileName);
                }

            }
            return videoFileList;
        }

        //모든 파일
        public static List<string> GetAllFiles(string directoryPath)
        {
            List<string> fileList = new List<string>();

            foreach (string fileName in Directory.GetFiles(directoryPath))
            {
               fileList.Add(fileName);
            }
            return fileList;
        }

        //이름순으로 정렬 
        public static List<string> SortByName(List<string> fileList)
        {
            var sortList = new List<String>();

            if (!fileList.IsEmpty())
            {
                sortList.AddRange(fileList);
                sortList.Sort((a, b) => a.CompareTo(b));
            }
            return sortList;
        }


        public static bool IsImageFile(string fileName)
        {
            if (Regex.IsMatch(fileName, @".jpg|.png|.bmp|.JPG|.PNG|.BMP|.JPEG|.jpeg$"))
                return true;
            else
                return false;
        }

        #endregion
    }
}

MediaUtility 사용법

public List<string> MediaFileList { get; set; }

MediaFileList = MediaUtility.SortByName(MediaUtility.GetAllFiles(Constant.MediaFilesURL));
반응형

댓글


loading