c#目录操作示例(获取目录名称 获取子目录)

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Humep.FileWatcher
{
    /// <summary>
    ///
    /// </summary>
    public static class DirectoryHelper
    {
        /// <summary>
        /// 初始化目录
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        public static bool CreateDirectory(string directory)
        {
            if (string.IsNullOrWhiteSpace(directory))
            {
                return false;
            }
            if (Directory.Exists(directory))
            {
                return true;
            }
            var dirInfo = Directory.CreateDirectory(directory);
            return dirInfo != null;
        }

/// <summary>
        /// 根据当前日组合文件夹名称
        /// </summary>
        /// <param name="now"></param>
        /// <returns></returns>
        public static string BuildDateDirectoryName(DateTime dateTime)
        {
            return dateTime.ToString("yyyyMMdd");
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static string BuildTodayDirectoryName()
        {
            return BuildDateDirectoryName(DateTime.Now);
        }
        /// <summary>
        /// 获取目录名称
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        public static string GetDirectoryName(string directory)
        {
            if (!Directory.Exists(directory))
            {
                return string.Empty ;// DirectoryHelper.CreateDirectory(directory);
            }
            return new DirectoryInfo(directory).Name;
        }
        /// <summary>
        /// 获取目录文件夹下的所有子目录
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="filePattern"></param>
        /// <returns></returns>
        public static List<string> FindSubDirectories(string directory, int maxCount)
        {
            List<string> subDirectories = new List<string>();
            if (string.IsNullOrEmpty(directory))
            {
                return subDirectories;
            }
            if (maxCount <= 0)
            {
                return subDirectories;
            }
            string[] directories = Directory.GetDirectories(directory);
            foreach (string subDirectory in directories)
            {
                if (subDirectories.Count == maxCount)
                {
                    break;
                }
                subDirectories.Add(subDirectory);
            }
            return subDirectories;
        }
        public static List<string> FindSubDirectories(string directory)
        {
            return Directory.GetDirectories(directory, "*", SearchOption.AllDirectories).ToList<string>();
        }
        /// <summary>
        /// 根据时间查询子目录
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="maxCount"></param>
        /// <returns></returns>
        public static List<string> FindSubDirectories(string directory, int maxCount, int days)
        {
            List<string> subDirectories = new List<string>();
            if (string.IsNullOrEmpty(directory))
            {
                return subDirectories;
            }
            if (maxCount <= 0)
            {
                return subDirectories;
            }
            string[] directories = Directory.GetDirectories(directory);
            DateTime lastTime = DateTime.Now.AddDays(-Math.Abs(days));
            foreach (string subDirectory in directories)
            {
                if (subDirectories.Count == maxCount)
                {
                    break;
                }
                DirectoryInfo dirInfo = new DirectoryInfo(subDirectory);
                if (dirInfo.LastWriteTime >= lastTime)
                {
                    subDirectories.Add(subDirectory);
                }
            }
            return subDirectories;
        }
        /// <summary>
        /// 将原目录移动到目标目录
        /// </summary>
        /// <param name="sourceDirectory"></param>
        /// <param name="targetDirectory"></param>
        /// <returns></returns>
        public static bool MoveDirectory(string sourceDirectory, string targetDirectory)
        {
            if (string.IsNullOrEmpty(sourceDirectory) || string.IsNullOrEmpty(targetDirectory))
            {
                return false;
            }
            string laseMoveDirectory = string.Format("{0}\\{1}", targetDirectory, DirectoryHelper.GetDirectoryName(sourceDirectory));
            while (Directory.Exists(laseMoveDirectory))
            {
                laseMoveDirectory = DirectoryHelper.Rename(laseMoveDirectory);
            }
            Directory.Move(sourceDirectory, laseMoveDirectory);
            return true;
        }
        /// <summary>
        /// 重新生成新的文件路径
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static string Rename(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return string.Empty;
            }
            string lastDirName = DirectoryHelper.GetDirectoryName(filePath);
            //重命名,则随机在原来文件名后面加几个随机数字进行组装成新的名字
            Random random = new Random(System.DateTime.Now.Millisecond);
            string randomData = random.Next().ToString();
            //把原文件名的名字加上随机数,组装成新的文件名(避免重名)
            string newlastDirName = lastDirName + randomData;
            string newDirPath = string.Empty;
            newDirPath = filePath.Substring(0, filePath.LastIndexOf("\\")) + "\\" + newlastDirName;
            //返回新的路径
            return newDirPath;
        }
        /// <summary>
        /// 获取指定目录下的所有文件和文件夹大小
        /// </summary>
        /// <param name="path">目录路径</param>
        /// <returns>string,返回所有文件夹名字</returns>
        public static long GetDirectorySize(string path)
        {
            long dirSize = 0;
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo file in dir.GetFiles())
                dirSize += file.Length;
            foreach (DirectoryInfo subdir in dir.GetDirectories())
                dirSize += GetDirectorySize(subdir.FullName);
            return dirSize;
        }
    }
}

(0)

相关推荐

  • C#遍历子目录的方法

    本文实例讲述了C#遍历子目录的方法.分享给大家供大家参考.具体实现方法如下: DirectoryInfo directoryInfo = new DirectoryInfo(spath); var directroies = directoryInfo.GetDirectories(); foreach (var directroy in directroies) { directroy.Name; //目录名 } 希望本文所述对大家的C#程序设计有所帮助.

  • C#下实现创建和删除目录的实例代码

    本文所述代码是从一个C#程序中摘录出来的,主要实现C#创建目录.删除文件夹及文件的功能,包括所引用的名称空间等,特别是对C#不熟悉的初学者,会有一定的参考借鉴价值.下面把创建和删除文件夹的完整代码帖上来供大家参考借鉴. 代码入下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Collections; nam

  • c#取得控制台应用程序根目录

    1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集 2.取得Web应用程序的根目录方法 方法1.HttpRuntime.AppDomainAppPath.ToString();//获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径.用于App_Data中获取方法2

  • C#常用目录文件操作类实例

    本文实例讲述了C#常用目录文件操作类.分享给大家供大家参考.具体分析如下: 这个c#类封装了常用的目录操作,包括列出目录下的文件.检测目录是否存在.得到目录下的文件列表.检测目录是否为空.查找目录下的文件等等功能 using System; using System.Text; using System.IO; namespace DotNet.Utilities { /// <summary> /// 文件操作夹 /// </summary> public static clas

  • C#遍历指定目录下所有文件的方法

    本文实例讲述了C#遍历指定目录下所有文件的方法.分享给大家供大家参考.具体分析如下: 先通过DirectoryInfo打开指定的目录,然后通过GetFiles()方法读取文件夹下的所有文件 DirectoryInfo di = new DirectoryInfo(@"C:\mydir"); Console.WriteLine("Directory: {0}", di.FullName); foreach (FileInfo file in di.GetFiles()

  • C#获取项目指定目录下文件的方法

    本文实例讲述了C#获取项目指定目录下文件的方法.分享给大家供大家参考.具体如下: public List<FileInfo> GetFiles() { string path = string.Concat(System.AppDomain.CurrentDomain.BaseDirectory,"Files\\"); //获取项目物理路径 string[] fileType=new string[]{"pdf\\","pps\\",

  • C#获取全部目录和文件的简单实例

    复制代码 代码如下: public class FileAccess{ //储存所有文件夹名private ArrayList dirs; public FileAccess(){dirs = new ArrayList();} //获取所有文件名private ArrayList GetFileName(string dirPath){ArrayList list = new ArrayList(); if (Directory.Exists(dirPath)){list.AddRange(D

  • c#同步两个子目录文件示例分享 两个文件夹同步

    复制代码 代码如下: using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Text.RegularExpressions;namespace AutoSync{    public class NewDirectory    {        public static Dictionary<string,string> GetDirectories(strin

  • vue项目环境搭建 启动 移植操作示例及目录结构分析

    目录 项目搭建 项目创建 项目启动停止 项目目录结构分析 全局脚本配置 index.html详细介绍 main.js入口文件详细 App.vue跟组件介绍 router-index.js 路由介绍 项目搭建 下载node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm,用淘宝源: npm install -g cnpm --registry=https://registry.npm.taobao.org 检测是否安装成功:cnpm -version

  • c#目录操作示例(获取目录名称 获取子目录)

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace Humep.FileWatcher{    /// <summary>    ///     /// </summary>    public static class DirectoryHelper    {        /// <sum

  • PHP文件与目录操作示例

    本文实例讲述了PHP文件与目录操作.分享给大家供大家参考,具体如下: 文件目录相关函数 <?php // 输出目录中的文件 function outputcurfiles ($allowedtypes, $thedir){ //首先,我们确保目录存在. if (is_dir ($thedir)){ //现在,我们使用scandir扫描目录中的文件. $scanarray = scandir ($thedir); //接着我们开始解析数组. //scandir()用"."和&quo

  • python 模拟创建seafile 目录操作示例

    本文实例讲述了python 模拟创建seafile 目录操作.分享给大家供大家参考,具体如下: # !/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import urllib import cookielib import json import httplib import re import requests import StringIO import time import sys import json impor

  • shell获取目录下所有文件夹的名称并输出的实例

    获取指定目录/usr/下所有文件夹的名称并输出: shell代码: #!/bin/bash #方法一 dir=$(ls -l /usr/ |awk '/^d/ {print $NF}') for i in $dir do echo $i done ####### #方法二 for dir in $(ls /usr/) do [ -d $dir ] && echo $dir done ##方法三 ls -l /usr/ |awk '/^d/ {print $NF}' ## 其实同方法一,直接

  • PHP文件操作之获取目录下文件与计算相对路径的方法

    获取目录下文件 1.获取目录下文件,不包括子目录 //获取某目录下所有文件.目录名(不包括子目录下文件.目录名) $handler = opendir($dir); while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名"0"等情况 if ($filename != "." && $filename != "..") { $files[]

  • php获取目录中所有文件名及判断文件与目录的简单方法

    一,php获取目录中的所有文件名 1.打开要操作目录的目录句柄 代码示例: //打开当前目录下的目录pic下的子目录common. $handler = opendir('pic/common'); 2.循环读取目录下的所有文件 代码示例: /*其中$filename = readdir($handler) 每次循环时将读取的文件名赋值给$filename,$filename !== false. 一定要用!==,因为如果某个文件名如果叫'0′,或某些被系统认为是代表false,用!=就会停止循

  • Java线程操作的常见方法【线程名称获取、设置、线程启动判断等】

    本文实例讲述了Java线程操作的常见方法.分享给大家供大家参考,具体如下: 一 线程名称的操作 1 代码 public class GetNameThreadDemo extends Thread { public void run() { for( int i = 0; i < 5; ++i ) { printMsg(); try { Thread.sleep(1000); // 睡眠1秒 } catch( InterruptedException e ) { e.printStackTrac

  • C/C++ 监控磁盘与目录操作的示例

    遍历磁盘容量: #include <stdio.h> #include <Windows.h> void GetDrivesType(const char* lpRootPathName) { UINT uDriverType = GetDriveType(lpRootPathName); switch (uDriverType) { case DRIVE_UNKNOWN:puts("未知磁盘"); break; case DRIVE_NO_ROOT_DIR:

  • Python安全获取域管理员权限几种方式操作示例

    目录 第1种方式:利用GPP漏洞获取域管理权限 第2种方式:获取服务器明文登录密码 第3种方式:使用MS14-068漏洞进行提权 第4种方式:窃取域管理员令牌 第5种方式:进程迁移 在大多数情况下,攻击者可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号.进程或是身份验证令牌,从而获取域管理员权限 第1种方式:利用GPP漏洞获取域管理权限 SYSVOL是域内的共享文件夹,用来存放登录脚本.组策略脚本等信息.当域管理员通过组策略修改密码时,在脚本中引入用户密码

随机推荐