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; }
}