FileDirLocationOperator - 文件或目录位置操作.

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5
  6 namespace MoveFiles.code {
  7     //文件或目录的 FullName 或 Name.
  8     public enum FileOrDirectoryNameType { FULLNAME, SIMNAME }
  9     //文件/目录 的匹配方式.
 10     public enum MatchPattern { STARTWITH, ENDWITH, EQUALS, CONTAINS }
 11
 12     class FileDirLocationOperator {
 13
 14         //默认处理的是 路径或文件名.
 15         public FileOrDirectoryNameType FileOrDirType = FileOrDirectoryNameType.SIMNAME;
 16         //默认 文件/目录名包含指定模式的字符串时,处理.
 17         public static MatchPattern OpePattern = MatchPattern.EQUALS;
 18
 19         public string Root { private set; get; }
 20
 21         /// <summary>
 22         /// 构造函数(初始化存储文件系统操作对象集合).
 23         /// </summary>
 24         /// <param name="root"></param>
 25         /// <param name="FileOrDirType"></param>
 26         /// <param name="OpePattern"></param>
 27         /// <param name="OpeType"></param>
 28         public FileDirLocationOperator(string root, FileOrDirectoryNameType FileOrDirType = FileOrDirectoryNameType.SIMNAME, MatchPattern OpePattern = MatchPattern.EQUALS) {
 29             if (String.IsNullOrEmpty(root)) throw new ArgumentNullException(root);
 30             Root = root;
 31         }
 32
 33         public void RenameDirBySubDir() {
 34             string desFullName = "";
 35             System.IO.DirectoryInfo desDir = null;
 36             //第一层目录.
 37             foreach (System.IO.DirectoryInfo dir1st in new System.IO.DirectoryInfo(Root).GetDirectories()) {
 38                 //第二层目录.
 39                 string desSimName = "";
 40                 int endIndex = -1;
 41                 foreach (System.IO.DirectoryInfo dir2nd in dir1st.GetDirectories()) {
 42                     endIndex = dir2nd.Name.LastIndexOf("_CSharp");
 43                     if (endIndex != -1) {
 44                         desSimName = dir2nd.Name.Substring(0, endIndex);
 45                         break;
 46                     }
 47                 }   //foreach:dir2nd
 48
 49                 if (string.IsNullOrEmpty(desSimName)) continue;
 50                 desFullName = Root + "\\" + desSimName;
 51                 desDir = new System.IO.DirectoryInfo(desFullName);
 52                 if (!desDir.Exists) {
 53                     desDir.Create();
 54                     dir1st.MoveTo(desDir.FullName);
 55                 }
 56             }   //foreach:dir1st
 57         }
 58
 59         /// <summary>
 60         /// 将指定目录下的所有文件和目录都移到上一目录,并删除被移空的当前指定的目录.
 61         /// </summary>
 62         /// <param name="dir">指定的目录.</param>
 63         public void SubFileSysToParent(System.IO.DirectoryInfo dir) {
 64             foreach (System.IO.FileSystemInfo sub in dir.GetFileSystemInfos()) {
 65                 Move(sub, dir.Parent.FullName + "\\" + sub.Name);
 66             }
 67             //删除已被移空的目录.
 68             if (dir.GetFileSystemInfos().Length == 0)
 69                 dir.Delete();
 70         }
 71
 72         /// <summary>
 73         /// 按文件的名称在当前目录创建对应的目录,并将文件移进去.例如,在当前目录中有个文件为"fileName.txt",
 74         /// 则在当前目录下创建目录"fileName",并将"fileName.txt"移进"fileName"中.
 75         /// </summary>
 76         /// <param name="filter">文件的后缀名.</param>
 77         public void MoveFilesByRandomCreateDir(string filter) {
 78             string desFullName = "";    //目标文件的名称.
 79             System.IO.DirectoryInfo dirDes = null;
 80             foreach (System.IO.FileInfo fInfo in new System.IO.DirectoryInfo(Root).GetFiles(filter)) {
 81                 desFullName = string.Concat(fInfo.DirectoryName, "\\", System.IO.Path.GetFileNameWithoutExtension(fInfo.Name));
 82                 dirDes = new System.IO.DirectoryInfo(desFullName);
 83                 //对于不存在的目录,需要创建.
 84                 if (!dirDes.Exists) {
 85                     dirDes.Create();
 86                 }
 87                 fInfo.MoveTo(string.Concat(dirDes.FullName, "\\", fInfo.Name));
 88             }
 89         }
 90
 91         /// <summary>
 92         /// 判断是否匹配.
 93         /// </summary>
 94         /// <param name="dirOrFileName">源文件或目录名.</param>
 95         /// <param name="namePattern">待匹配的字符串.</param>
 96         /// <param name="ignoreCase">是否忽略大小写.</param>
 97         /// <returns></returns>
 98         public static bool Match(string dirOrFileName, string namePattern, bool ignoreCase) {
 99             switch (OpePattern) {
100                 case MatchPattern.CONTAINS:
101                     return dirOrFileName.Contains(namePattern);
102                 case MatchPattern.EQUALS:
103                     if (ignoreCase)
104                         return dirOrFileName.Equals(namePattern, StringComparison.CurrentCultureIgnoreCase);
105                     else
106                         return dirOrFileName.Equals(namePattern, StringComparison.CurrentCulture);
107                 case MatchPattern.STARTWITH:
108                     return dirOrFileName.StartsWith(namePattern);
109                 case MatchPattern.ENDWITH:
110                     return dirOrFileName.EndsWith(namePattern);
111                 default:
112                     throw new ArgumentNullException("MatchPattern:OperationPattern");
113             }
114         }
115
116         /// <summary>
117         /// 移动文件或目录.
118         /// </summary>
119         /// <param name="fSysSrc">源文件或目录.</param>
120         /// <param name="desDirName">目标文件或目录名.</param>
121         private void Move(System.IO.FileSystemInfo fSysSrc, string desDirName) {
122             //文件.
123             if (fSysSrc is System.IO.FileInfo) {
124                 System.IO.FileInfo f = (System.IO.FileInfo)fSysSrc;
125                 f.MoveTo(desDirName);
126             }
127             //目录.
128             else if (fSysSrc is System.IO.DirectoryInfo) {
129                 System.IO.DirectoryInfo d = (System.IO.DirectoryInfo)fSysSrc;
130                 d.MoveTo(desDirName);
131             }
132             else throw new ArgumentNullException(fSysSrc.FullName);
133         }
134     }
135 }
时间: 2024-10-10 14:05:14

FileDirLocationOperator - 文件或目录位置操作.的相关文章

python 文件与目录的操作 &nbsp; 未完善 需要重新学习

文件与目录的操作:    -文件读写:python进行文件读写的函数是open或file file_handler = open(filename,mode) mode, 模式 说明 r 只读 r+ 读写 w 写入,先删除原文件,在重新写入,如果文件没有则 创建 w+ 读写,先删除原文件,在重新写入,如果文件没有则创建(可以写入输出) 读范例: >>> fo  = open('/tools/123/test.log')                                   

Perl文件、目录常用操作

注意,这些操作的对象是文件名(相对路径/绝对路径),而非文件/目录句柄,句柄只是perl和文件系统中文件的关联通道,而非实体对象. 创建文件 在unix类操作系统中有一个touch命令可以非常方便的创建文件,还能批量创建一些名称规律的文件.但实际上touch的主要介绍中却是"修改文件时间戳",创建文件只不过是它的辅助能力.如果没有touch命令,如何在shell环境下创建文件?最佳方式是通过重定向的方式. 在perl中没有touch类似的功能,所以原始地只能通过open打开输出类的文件

os :文件和目录的操作

文件操作 os.path.exists(path):这个函数用于检查文件或目录path是否存在,返回一个布尔值 os.path.isfile(path):这个函数用于判断参数path是否是文件(而不是目录)copy os.path.isdir(path):这个函数用于判断参数是否是目录(而不是文件) shutil.copy(src.dst):这个函数用于将文件或目录(src)移动到另外一个位置(dst) os.path.abspath(path):这个函数将返回绝对路径名 os.remove(p

在Python中对文件和目录进行操作

文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法. 一.文件打开和关闭操作 对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件. 1.打开文件使用的是open()函数,它提供初始化输入.输出(I/O)操作的通用接口,成功打开文件后返回一个文件对象,打开失败则引发一个错误.打开文件的语法如下: file_object = open(file_name,access_mode [

文件及目录相关操作

PHP创建文件(夹)以及目录操作 一.目录操作         首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: <?php$base_dir="filelist/"; //打开目录 $fso=opendir($base_dir);echo  $base_dir."<hr/>";while($flist=readdir($fso)){//文件列表 echo $flist

转:eclipse打开文件或者目录位置(不使用插件)

http://my.oschina.net/havoc/blog/204958?p= 首先说不使用插件的方法 WINDOWS eclipse配置 Run-->External Tools-->External Tools Configurations…    new 一个 program(比如名字叫 open_file)    location 里面填 :C:/WINDOWS/explorer.exe    Arguments 里面填: ${container_loc} 然后切换到common

(15) PHP 随笔---LAMP Linux基本操作 对文件、目录的操作

◇对目录的操作: ◇创建目录: mkdir Xmu //在当前目录下创建一个名为Xmu的目录 ◇创建多个级别目录关系: mkdir -p newdir/newdir/newdir //在当前目录下创建多个连续目录,-p的意思是以递归的方式 ◇移动目录(也可以针对文件操作): mv dir1 dir2 //把dir1移动到dir2目录下 mv dir1/dir2 dir3 //把dir2移动到dir3目录下 mv dir1/dir2 dir3/dir4 //把dir2移动到dir4目录下 ◇改目录

jupyter notebook 修改默认文件夹[目录位置]

我自己用到的有两个方法:[仅测试过windows] 方法1:设置可变的目录位置[一步到位] 在你想打开的目录位置,shift+鼠标右键打开Powershell窗口,输入jupyter notebook回车jupyter工作目录就是在目前文件夹,方便吧~ 方法2:锁定目录位置 首先,打开cmd输入jupyter notebook --generate-config 系统会反馈默认文件夹路径,根据反馈找到文件:jupyter_notebook_config.py 修改最后一行如下 找到代码: #c.

Python之文件操作:文件、目录的操作

一.创建 1.创建文件 open(path,'w') 2.创建目录 (1)os.mkdir(pt[, mode=0777]) 新建一个目录pt,参数mode表示生成的目录的权限,默认是超级权限,也就是0777. (2)os.makedirs(pt) 创建多级目录 比如在python目录下创建\t1\t2\t3 3.创建临时文件 os.tmpfile() 已"w+b"的模式创建并打开一个临时文件. 缓存在内存中,不占用内存空间.用完不用删除,close()之后就不存在了 fp=os.tm