C#文件操作工具类

1.获取指定文件夹中最新创建得文件信息:

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

namespace util
{
    /// <summary>
    /// 获取指定文件夹中最新创建得文件信息
    /// </summary>
    public static class ReadNewFileUtil
    {

        /// <summary>
        /// 最新创建得文件信息字段
        /// </summary>
        public class FileTimeInfo
        {
            /// <summary>
            /// 文件名
            /// </summary>
            public string FileName;
            /// <summary>
            /// 创建时间
            /// </summary>
            public DateTime FileCreateTime;
        }

        /// <summary>
        /// 获取最近创建的文件名和创建时间
        /// </summary>
        /// <param name="dir">文件夹路径 例:d:\\robot\\images</param>
        /// <param name="ext">文件后缀名 例:.png</param>
        /// <returns></returns>
        public static FileTimeInfo GetLatestFileTimeInfo(string dir, string ext)
        {
            List<FileTimeInfo> list = new List<FileTimeInfo>();
            DirectoryInfo d = new DirectoryInfo(dir);
            foreach (FileInfo file in d.GetFiles())
            {
                if (file.Extension.ToUpper() == ext.ToUpper())
                {
                    list.Add(new FileTimeInfo()
                    {
                        FileName = file.FullName,
                        FileCreateTime = file.CreationTime
                    });
                }
            }
            var f = from x in list
                    orderby x.FileCreateTime
                    select x;
            return f.LastOrDefault();
        }
    }
}

2.获取文件夹下所有图片数据:

/// <summary>
/// 获取文件夹下所有图片数据
/// </summary>
/// <param name="path">文件夹地址</param>
/// <returns></returns>
public static List<UavPatrolInfo> getImageListAll(string path)
{
    List<UavPatrolInfo> uavPatrolInfos = new List<UavPatrolInfo>();
    try
    {
        var images = Directory.GetFiles(path, ".", SearchOption.AllDirectories).Where(s => s.EndsWith(".png") || s.EndsWith(".jpg") || s.EndsWith(".gif"));

        DateTimeFormatInfo dtFormat = new DateTimeFormatInfo();
        dtFormat.ShortDatePattern = "yyyy-MM-dd";

        foreach (var str in images)
        {
            var imageUrl = str.Replace("\\", "/");
            FileInfo fi = new FileInfo(imageUrl);
            // 获取该图片创建时间
            string dateStr = fi.LastWriteTime.ToString("yyyy-MM-dd");
            DateTime dateTimeNow = Convert.ToDateTime(dateStr, dtFormat);
            string name = fi.Name.ToString().Trim();
            UavPatrolInfo uavPatrolInfo = new UavPatrolInfo();
            uavPatrolInfo.pictureName = name;
            uavPatrolInfo.pictureUrl = imageUrl;
            uavPatrolInfo.pictureCreateTime = dateStr;
            uavPatrolInfos.Add(uavPatrolInfo);
        }
    }
    catch (Exception x)
    {
        logger.Error("获取文件夹下所有图片数据:" + x.Message);
    }
    return uavPatrolInfos;
}

/// <summary>
/// 实体类
/// </summary>
public class UavPatrolInfo
{
    /// <summary>
    /// 图片路径
    /// </summary>
    public string pictureUrl { get; set; }
    /// <summary>
    /// 图片创建时间
    /// </summary>
    public string pictureCreateTime { get; set; }
    /// <summary>
    /// 图片名称
    /// </summary>
    public string pictureName { get; set; }
    /// <summary>
    /// 视频路径
    /// </summary>
    public string videoUrl { get; set; }
    /// <summary>
    /// 视频名称
    /// </summary>
    public string videoName { get; set; }
    /// <summary>
    /// 视频创建时间
    /// </summary>
    public string videoCreateTime { get; set; }
    /// <summary>
    /// 视频总时长
    /// </summary>
    public string videoDuration { get; set; }
}

3.获取文件夹下所有视频数据:

/// <summary>
/// 进获取文件夹下所有视频数据
/// <param name="path">文件夹地址</param>
/// </summary>
public static List<UavPatrolInfo> getVideoList(string path)
{
    List<UavPatrolInfo> uavPatrolInfos = new List<UavPatrolInfo>();
    try
    {
        // 第一帧图片保存地址
        // var pathImageFile = SysContent.tabOneConfigDic["uavPatrolVideoImageList"].ToString();
        var videos = Directory.GetFiles(path, ".", SearchOption.AllDirectories).Where(s => s.EndsWith(".mp4"));

        foreach (var str in videos)
        {
            var videoUrl = str.Replace("\\", "/");
            FileInfo fi = new FileInfo(videoUrl);
            // 获取该视频创建时间
            string dateStr = fi.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
            string name = fi.Name.ToString().Trim();
            UavPatrolInfo uavPatrolInfo = new UavPatrolInfo();
            string videoImageName = name.Replace(".mp4", "");
            uavPatrolInfo.videoName = videoImageName;
            uavPatrolInfo.videoUrl = videoUrl;
            uavPatrolInfo.videoCreateTime = dateStr;
            // string videoImageSaveUrl = pathImageFile + name.Replace("mp4", "png");
            // 保存第一帧图片
            /*if (!File.Exists(videoImageSaveUrl))
            {
                BatUtil.callBat(videoUrl, videoImageSaveUrl);
            }*/
            uavPatrolInfo.pictureUrl = videoImageSaveUrl;
            uavPatrolInfo.pictureName = videoImageName;
            // 获取视频时长
            //string videoDuration = BatUtil.GetVideoDuration(videoUrl);
            //uavPatrolInfo.videoDuration = videoDuration;
            uavPatrolInfos.Add(uavPatrolInfo);
            // 根据视频修改时间排序
            uavPatrolInfos.Sort(new ReComparerVideo());
        }
    }
    catch (Exception x)
    {
        logger.Error("进度可视化-工程进度视频地址获取异常:" + x.Message);
    }
    return uavPatrolInfos;
}

/// <summary>
/// UavPatrolInfo对象的videoCreateTime属性比较器
/// 重写Compare方法
/// </summary>
public class ReComparerVideo : IComparer<UavPatrolInfo>
{
    public int Compare(UavPatrolInfo s1, UavPatrolInfo s2)
    {
        return (s1.videoCreateTime.CompareTo(s2.videoCreateTime));
    }
}

/// <summary>
/// 实体类
/// </summary>
public class UavPatrolInfo
{
    /// <summary>
    /// 图片路径
    /// </summary>
    public string pictureUrl { get; set; }
    /// <summary>
    /// 图片创建时间
    /// </summary>
    public string pictureCreateTime { get; set; }
    /// <summary>
    /// 图片名称
    /// </summary>
    public string pictureName { get; set; }
    /// <summary>
    /// 视频路径
    /// </summary>
    public string videoUrl { get; set; }
    /// <summary>
    /// 视频名称
    /// </summary>
    public string videoName { get; set; }
    /// <summary>
    /// 视频创建时间
    /// </summary>
    public string videoCreateTime { get; set; }
    /// <summary>
    /// 视频总时长
    /// </summary>
    public string videoDuration { get; set; }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哎呦喂O_o嗨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值