亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#文件助手類分享(讀取文件內容 操作日志文件)

2020-01-24 02:49:08
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Linq;
using System.Runtime.InteropServices;
namespace Humep.FileWatcher
{
    /// <summary>
    /// 日志文件操作
    /// Date:2011-06-01
    /// </summary>
    public static class FileHelper
    {
        /// <summary>
        /// 獲取文件路徑中最后的目錄名
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static string GetDirectoryName(string fullName)
        {
            if (string.IsNullOrWhiteSpace(fullName))
            {
                return null;
            }
            return fullName.Substring(0,fullName.LastIndexOf('//')+1);
        }
        /// <summary>
        /// 獲取路徑中的文件名稱
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static string GetFileName(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return string.Empty;
            }
            if (filePath.Length > 260)
            {
                return filePath.Substring(filePath.LastIndexOf('//') + 1, int.MaxValue);
            }
            return Path.GetFileName(filePath);
        }

        /// <summary>
        /// 文件名是否滿足filePattern格式。
        /// </summary>
        /// <param name="fileName"></param>
        public static bool IsMatched(string fileName, string filePattern)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                return false;
            }
            if (string.IsNullOrWhiteSpace(filePattern))
            {
                return false;
            }
            Regex regex = new Regex(filePattern, RegexOptions.IgnoreCase);
            return regex.IsMatch(fileName);
        }

        /// <summary>
        /// 讀取文件內容
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static string ReadAllText(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath) || File.Exists(filePath) == false)
            {
                return string.Empty;
            }
            return File.ReadAllText(filePath);
        }
        /// <summary>
        /// 刪除文件
        /// </summary>
        /// <param name="filePath"></param>
        public static bool Delete(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return false;
            }
            if (!File.Exists(filePath))
            {
                return false;
            }
            File.Delete(filePath);
            return !File.Exists(filePath);
        }
        /// <summary>
        /// 刪除目錄下所有過期文件
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="expiredDays"></param>
        public static int ClearExpiredFiles(string directory, int expiredDays)
        {
            if (!Directory.Exists(directory))
            {
                return 0;
            }
            if (expiredDays <= 0)
            {
                return 0;
            }
            DirectoryInfo dir = new DirectoryInfo(directory);
            IList<FileInfo> fileInfos =dir.GetFiles();
            if (fileInfos == null || fileInfos.Count < 1)
            {
                return 0;
            }
            int count = 0;
            foreach (FileInfo fileInfo in fileInfos)
            {
                if (fileInfo.CreationTime.AddDays(expiredDays) < DateTime.Now)
                {
                    //added by yangbinggang
                    fileInfo.Attributes = FileAttributes.Normal;
                    FileHelper.Delete(fileInfo.FullName);
                    count = count + 1;
                }
            }
            return count;
        }
        /// <summary>
        /// 刪除目錄下所有過期文件
        /// </summary>
        /// <param name="dirs">目錄數組</param>
        /// <param name="expiredDays"></param>
        /// <returns></returns>
        public static int ClearExpiredFiles(string[] dirs, int expiredDays)
        {
            if (dirs == null)
            {
                return 0;
            }
            if (dirs.Length <= 0)
            {
                return 0;
            }
            int count = 0;
            foreach (string dir in dirs)
            {
                count = count + ClearExpiredFiles(dir, expiredDays);
            }
            return count;
        }
        /// <summary>
        /// 刪除過期目錄及其子目錄和文件
        /// </summary>
        /// <param name="directories">目錄數組</param>
        /// <param name="expiredDays"></param>
        /// <returns></returns>
        public static int ClearExpiredDirectories(string[] directories, int expiredDays)
        {
            if (directories == null || directories.Length <= 0)
            {
                return 0;
            }
            if (expiredDays < 0)
            {
                return 0;
            }
            int count = 0;
            foreach (string directory in directories)
            {
                if (!Directory.Exists(directory))
                {
                    continue;
                }
                count += ClearExpiredFiles(directory, expiredDays);
                DirectoryInfo directoryInfo = new DirectoryInfo(directory);
                if (directoryInfo.CreationTime.AddDays(expiredDays) < DateTime.Now)
                {
                    directoryInfo.Attributes = FileAttributes.Normal;
                    Directory.Delete(directory, true);
                }
            }
            return count;
        }
        /// <summary>
        /// 深度枚舉出所有子目錄(包括子目錄的子目錄)
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        public static IList<string> EnumerateAllSubDirectories(string directory)
        {
            List<string> direcotryList = new List<string>();
            if (string.IsNullOrWhiteSpace(directory))
            {
                return direcotryList;
            }
            if (!Directory.Exists(directory))
            {
                return direcotryList;
            }

            string[] folders = Directory.GetDirectories(directory);
            direcotryList.AddRange(folders);
            foreach (string folder in folders)
            {
                direcotryList.AddRange(EnumerateAllSubDirectories(folder));
            }
            return direcotryList;
        }
        /// <summary>
        /// 根據時間查詢文件
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="maxCount"></param>
        /// <returns></returns>
        public static IList<string> FindFiles(string directory, int maxCount, int days)
        {
            IList<string> fileList = new List<string>();
            if (!Directory.Exists(directory) || maxCount <= 0)
            {
                return fileList;
            }
            string[] files = Directory.GetFiles(directory);
            if(files==null)
            {
                return fileList;
            }
            //modified by yangbinggang 2012-12-10  DTS2012121004132/DTS2012121004404/DTS2012121004291
            DateTime lastTime = DateTime.Now.AddDays(-Math.Abs(days));
            fileList = files.Where(item =>
                            {
                                if (maxCount <= 0)
                                {
                                    return false;
                                }
                                FileInfo fileInfo = new FileInfo(item);
                                if (fileInfo.LastWriteTime >= lastTime)
                                {
                                    maxCount--;
                                    return true;
                                }
                                return false;
                            }).ToList<string>();
            return fileList;
        }
        /// <summary>
        /// 查詢目錄下的所有文件,將recursive設為True可查詢子目錄中的所有文件。
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="filePattern"></param>
        /// <param name="maxCount"></param>
        /// <param name="recursive"></param>
        /// <returns></returns>
        public static IList<FileInfo> FindFiles(string directory, string filePattern, int maxCount, bool recursive)
        {
            if (!recursive)
            {
                return FileHelper.FindFiles(directory, filePattern, maxCount);
            }
            IList<string> directories = EnumerateAllSubDirectories(directory);
            return FindFiles(directories,filePattern, maxCount);
        }
        public static IList<FileInfo> FindFiles(IList<string> directories,string filePattern, int maxCount)
        {
            List<FileInfo> files = new List<FileInfo>();
            foreach (string directoryItem in directories)
            {
                files.AddRange(FileHelper.FindFiles(directoryItem, filePattern, maxCount));
                if (files.Count > maxCount)
                {
                    break;
                }
            }
            return files.GetRange(0, Math.Min(files.Count, maxCount));
        }
        /// <summary>
        /// 默認查找20個文件
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="filePattern"></param>
        /// <returns></returns>
        public static IList<FileInfo> FindFiles(string directory, string filePattern)
        {
            int maxCount = 20;
            return FindFiles(directory, filePattern, maxCount);
        }
        /// <summary>
        /// 獲取文件
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="filePattern"></param>
        /// <returns></returns>
        public static IList<FileInfo> FindFiles(string directory, string filePattern, int maxCount)
        {
            List<FileInfo> matchedFiles = new List<FileInfo>();
            IList<FileInfo> fileInfos = FindAllFiles(directory);
            if (string.IsNullOrWhiteSpace(filePattern))
            {
                return matchedFiles;
            }
            if (maxCount < 0 || maxCount > fileInfos.Count)
            {
                maxCount = fileInfos.Count;
            }
            maxCount--;
            foreach (var fileInfo in fileInfos)
            {
                if (maxCount <0)
                {
                    break;
                }
                if (FileHelper.IsMatched(fileInfo.Name, filePattern))
                {
                    matchedFiles.Add(fileInfo);
                }
                maxCount--;
            }
            return matchedFiles;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="filePattern"></param>
        /// <returns></returns>
        public static IList<FileInfo> FindAllFiles(string directory)
        {
            IList<FileInfo> fileInfos = new List<FileInfo>();
            if (string.IsNullOrWhiteSpace(directory))
            {
                return fileInfos;
            }
            if (!Directory.Exists(directory))
            {
                return fileInfos;
            }
            DirectoryInfo dir = new DirectoryInfo(directory);
            fileInfos = dir.GetFiles();
            return fileInfos;
        }
        /// <summary>
        /// 單個文件移動
        /// </summary>
        /// <param name="sourcePath"></param>
        /// <param name="targetDirectory"></param>
        /// <returns></returns>
        public static bool MoveFile(string sourcePath, string targetDirectory)
        {
            if (!File.Exists(sourcePath))
            {
                return false;
            }
            if (!Directory.Exists(targetDirectory))
            {
                return false;
            }
            var targetPath = string.Format("{0}//{1}", targetDirectory, FileHelper.GetFileName(sourcePath));
            while (File.Exists(targetPath))
            {
                targetPath = FileHelper.Rename(targetPath);
            }
            if (sourcePath.Length > 260 || targetPath.Length > 260)
            {
                return MoveLongPathFile(@"http://?/"+sourcePath,@"http://?/"+ targetPath);
            }
            File.Move(sourcePath, targetPath);
            return true;
        }

        [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "MoveFile")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool MoveLongPathFile(string lpExistingFileName, string lpNewFileName);
        /// <summary>
        /// 單個文件移動
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="sourceDirectory"></param>
        /// <param name="targetDirectory"></param>
        /// <returns></returns>
        public static bool MoveFile(string fileName, string sourceDirectory, string targetDirectory)
        {
            if (!File.Exists(fileName))
            {
                return false;
            }
            if (!Directory.Exists(sourceDirectory))
            {
                return false;
            }
            if (!Directory.Exists(targetDirectory))
            {
                return false;
            }
            string filePath = fileName.Replace(sourceDirectory, targetDirectory);
            string fileDir=Path.GetDirectoryName(filePath);
            if(!DirectoryHelper.CreateDirectory(fileDir))
            {
                return false;
            }
            return MoveFile(fileName, fileDir);
        }
        /// <summary>
        /// 重新生成新的文件路徑
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static string Rename(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return string.Empty;
            }
            string lastFileName = Path.GetFileNameWithoutExtension(filePath);
            string lastFileExtension = Path.GetExtension(filePath);
            //重命名,則隨機在原來文件名后面加幾個隨機數字進行組裝成新的名字
            Random random = new Random(System.DateTime.Now.Millisecond);
            string randomData = random.Next().ToString();
            //把原文件名的名字加上隨機數,組裝成新的文件名(避免重名)
            string newFileName = lastFileName + randomData;
            return Path.GetDirectoryName(filePath) + "http://" + newFileName + lastFileExtension;
        }

    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产色婷婷国产综合在线理论片a| 亚洲www在线| 国产精品久久久久一区二区| 亚洲精品自拍偷拍| 日韩中文字幕在线免费观看| 日韩在线一区二区三区免费视频| 亚洲国产精品大全| 成人黄色免费网站在线观看| 色偷偷av亚洲男人的天堂| 国产成人av在线播放| 久久免费视频这里只有精品| 欧美国产日韩xxxxx| 欧美激情视频给我| 7m精品福利视频导航| 国产精品一香蕉国产线看观看| 欧美激情视频在线| 欲色天天网综合久久| 国产欧美婷婷中文| 98精品国产自产在线观看| 久久影视电视剧免费网站清宫辞电视| 欧美在线一级va免费观看| 国产精品日韩欧美综合| 91精品视频在线免费观看| 国产精品视频免费在线| 97在线免费视频| 国产一区二区三区视频免费| 亚洲电影av在线| 成人免费淫片aa视频免费| 欧美精品久久久久| 久久天天躁狠狠躁夜夜躁2014| 国产日韩av在线| 日韩精品在线观看一区| 草民午夜欧美限制a级福利片| 亚洲精品国产拍免费91在线| 久久久久久久久综合| 伊人久久大香线蕉av一区二区| 国产精品专区第二| 狠狠色狠狠色综合日日小说| 国产成人精品一区二区三区| 97视频在线观看免费高清完整版在线观看| 日韩高清av在线| 欧美亚洲国产精品| 欧美激情2020午夜免费观看| 欧美性在线视频| 亚洲精品免费一区二区三区| 国产中文字幕日韩| 91国内产香蕉| 久久99视频精品| 国产99久久久欧美黑人| 国内精品久久久久久中文字幕| 国产高清在线不卡| 欧美视频在线观看 亚洲欧| 欧美丰满少妇xxxxx| 亚洲精品动漫久久久久| 久久久精品影院| 北条麻妃久久精品| 欧美区二区三区| 国产69精品久久久久99| 久久久精品电影| 国产一区二区三区视频在线观看| 久久影视免费观看| 亚洲精品aⅴ中文字幕乱码| 欧美一级bbbbb性bbbb喷潮片| 久久成人这里只有精品| 韩国日本不卡在线| 97国产真实伦对白精彩视频8| 亚洲国产成人一区| 丝袜美腿亚洲一区二区| 97热精品视频官网| 亚洲天堂网在线观看| 亚洲精品中文字幕有码专区| 91av在线播放| 国产99久久精品一区二区| 国产激情视频一区| 中文日韩在线视频| 精品国产鲁一鲁一区二区张丽| 97精品国产91久久久久久| 成人高h视频在线| 欧美激情在线狂野欧美精品| 亚洲成人aaa| 亚洲天堂av综合网| 亚洲精品xxx| 亚洲免费高清视频| 成人亚洲欧美一区二区三区| 色多多国产成人永久免费网站| 久久精品国产久精国产一老狼| 日韩欧美在线视频免费观看| 5252色成人免费视频| 丝袜美腿精品国产二区| 日韩中文字幕视频| 美女性感视频久久久| 在线丨暗呦小u女国产精品| 亚洲国产中文字幕在线观看| 一个色综合导航| 亚洲香蕉成人av网站在线观看| 久久香蕉国产线看观看av| 一区二区三区在线播放欧美| 亚洲人成在线观看网站高清| 九九热这里只有在线精品视| 精品国产一区二区三区久久狼5月| 在线播放日韩欧美| 欧美一级片久久久久久久| 欧美激情videos| 欧美大片大片在线播放| 啊v视频在线一区二区三区| 午夜精品国产精品大乳美女| 欧美日韩国产色视频| 91精品国产91久久| 国产亚洲欧美日韩一区二区| 亚洲精品狠狠操| 日韩精品免费综合视频在线播放| 97视频在线观看免费高清完整版在线观看| 久久夜色撩人精品| 日韩国产欧美精品在线| 亚洲午夜小视频| 久久久国产一区二区| 欧美另类极品videosbestfree| 亚洲福利视频网站| xxxxxxxxx欧美| 黄色成人av在线| 国产69精品久久久久99| 欧美日韩一区二区三区在线免费观看| 日韩欧美有码在线| 日韩国产高清视频在线| 欧洲成人性视频| 久久国产精品网站| 欧美成人午夜影院| 欧美另类极品videosbest最新版本| 久久久亚洲精选| 日韩欧美有码在线| 久久精品视频导航| 亚洲国产一区自拍| 5566日本婷婷色中文字幕97| 欧美人交a欧美精品| 日韩不卡中文字幕| 亚洲精品综合精品自拍| 欧美日韩成人在线观看| 国产精品青草久久久久福利99| 欧美诱惑福利视频| 人人做人人澡人人爽欧美| 亚洲精品在线91| 日韩福利在线播放| 欧美激情免费观看| 国产91精品最新在线播放| 欧美天天综合色影久久精品| 国产精品av电影| 日韩视频一区在线| 欧美老肥婆性猛交视频| 亚洲最大的av网站| 亚洲色图综合久久| 久久99热精品这里久久精品| 欧美激情视频给我| 亚洲成色777777女色窝| 久久成人亚洲精品| 国产日韩精品在线| www.久久草.com| 国产a∨精品一区二区三区不卡| 91麻豆国产语对白在线观看| 成人免费观看49www在线观看| 国产区精品视频| 精品亚洲国产成av人片传媒| 欧美日韩在线观看视频| 国产精品自产拍在线观看中文| 亚洲自拍偷拍网址|