FileDirLocationOperator - 文件或目录位置操作.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace MoveFiles.code {
- //文件或目录的 FullName 或 Name.
- public enum FileOrDirectoryNameType { FULLNAME, SIMNAME }
- //文件/目录 的匹配方式.
- public enum MatchPattern { STARTWITH, ENDWITH, EQUALS, CONTAINS }
- class FileDirLocationOperator {
- //默认处理的是 路径或文件名.
- public FileOrDirectoryNameType FileOrDirType = FileOrDirectoryNameType.SIMNAME;
- //默认 文件/目录名包含指定模式的字符串时,处理.
- public static MatchPattern OpePattern = MatchPattern.EQUALS;
- public string Root { private set; get; }
- /// <summary>
- /// 构造函数(初始化存储文件系统操作对象集合).
- /// </summary>
- /// <param name="root"></param>
- /// <param name="FileOrDirType"></param>
- /// <param name="OpePattern"></param>
- /// <param name="OpeType"></param>
- public FileDirLocationOperator(string root, FileOrDirectoryNameType FileOrDirType = FileOrDirectoryNameType.SIMNAME, MatchPattern OpePattern = MatchPattern.EQUALS) {
- if (String.IsNullOrEmpty(root)) throw new ArgumentNullException(root);
- Root = root;
- }
- public void RenameDirBySubDir() {
- string desFullName = "";
- System.IO.DirectoryInfo desDir = null;
- //第一层目录.
- foreach (System.IO.DirectoryInfo dir1st in new System.IO.DirectoryInfo(Root).GetDirectories()) {
- //第二层目录.
- string desSimName = "";
- int endIndex = -;
- foreach (System.IO.DirectoryInfo dir2nd in dir1st.GetDirectories()) {
- endIndex = dir2nd.Name.LastIndexOf("_CSharp");
- if (endIndex != -) {
- desSimName = dir2nd.Name.Substring(, endIndex);
- break;
- }
- } //foreach:dir2nd
- if (string.IsNullOrEmpty(desSimName)) continue;
- desFullName = Root + "\\" + desSimName;
- desDir = new System.IO.DirectoryInfo(desFullName);
- if (!desDir.Exists) {
- desDir.Create();
- dir1st.MoveTo(desDir.FullName);
- }
- } //foreach:dir1st
- }
- /// <summary>
- /// 将指定目录下的所有文件和目录都移到上一目录,并删除被移空的当前指定的目录.
- /// </summary>
- /// <param name="dir">指定的目录.</param>
- public void SubFileSysToParent(System.IO.DirectoryInfo dir) {
- foreach (System.IO.FileSystemInfo sub in dir.GetFileSystemInfos()) {
- Move(sub, dir.Parent.FullName + "\\" + sub.Name);
- }
- //删除已被移空的目录.
- if (dir.GetFileSystemInfos().Length == )
- dir.Delete();
- }
- /// <summary>
- /// 按文件的名称在当前目录创建对应的目录,并将文件移进去.例如,在当前目录中有个文件为"fileName.txt",
- /// 则在当前目录下创建目录"fileName",并将"fileName.txt"移进"fileName"中.
- /// </summary>
- /// <param name="filter">文件的后缀名.</param>
- public void MoveFilesByRandomCreateDir(string filter) {
- string desFullName = ""; //目标文件的名称.
- System.IO.DirectoryInfo dirDes = null;
- foreach (System.IO.FileInfo fInfo in new System.IO.DirectoryInfo(Root).GetFiles(filter)) {
- desFullName = string.Concat(fInfo.DirectoryName, "\\", System.IO.Path.GetFileNameWithoutExtension(fInfo.Name));
- dirDes = new System.IO.DirectoryInfo(desFullName);
- //对于不存在的目录,需要创建.
- if (!dirDes.Exists) {
- dirDes.Create();
- }
- fInfo.MoveTo(string.Concat(dirDes.FullName, "\\", fInfo.Name));
- }
- }
- /// <summary>
- /// 判断是否匹配.
- /// </summary>
- /// <param name="dirOrFileName">源文件或目录名.</param>
- /// <param name="namePattern">待匹配的字符串.</param>
- /// <param name="ignoreCase">是否忽略大小写.</param>
- /// <returns></returns>
- public static bool Match(string dirOrFileName, string namePattern, bool ignoreCase) {
- switch (OpePattern) {
- case MatchPattern.CONTAINS:
- return dirOrFileName.Contains(namePattern);
- case MatchPattern.EQUALS:
- if (ignoreCase)
- return dirOrFileName.Equals(namePattern, StringComparison.CurrentCultureIgnoreCase);
- else
- return dirOrFileName.Equals(namePattern, StringComparison.CurrentCulture);
- case MatchPattern.STARTWITH:
- return dirOrFileName.StartsWith(namePattern);
- case MatchPattern.ENDWITH:
- return dirOrFileName.EndsWith(namePattern);
- default:
- throw new ArgumentNullException("MatchPattern:OperationPattern");
- }
- }
- /// <summary>
- /// 移动文件或目录.
- /// </summary>
- /// <param name="fSysSrc">源文件或目录.</param>
- /// <param name="desDirName">目标文件或目录名.</param>
- private void Move(System.IO.FileSystemInfo fSysSrc, string desDirName) {
- //文件.
- if (fSysSrc is System.IO.FileInfo) {
- System.IO.FileInfo f = (System.IO.FileInfo)fSysSrc;
- f.MoveTo(desDirName);
- }
- //目录.
- else if (fSysSrc is System.IO.DirectoryInfo) {
- System.IO.DirectoryInfo d = (System.IO.DirectoryInfo)fSysSrc;
- d.MoveTo(desDirName);
- }
- else throw new ArgumentNullException(fSysSrc.FullName);
- }
- }
- }
FileDirLocationOperator - 文件或目录位置操作.的更多相关文章
- Perl文件、目录常用操作
注意,这些操作的对象是文件名(相对路径/绝对路径),而非文件/目录句柄,句柄只是perl和文件系统中文件的关联通道,而非实体对象. 创建文件 在unix类操作系统中有一个touch命令可以非常方便的创 ...
- 【node】fs模块,文件和目录的操作
检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...
- 转:eclipse打开文件或者目录位置(不使用插件)
http://my.oschina.net/havoc/blog/204958?p= 首先说不使用插件的方法 WINDOWS eclipse配置 Run-->External Tools--&g ...
- Java——文件及目录File操作
API file.listFiles(); //列出目录下所有文件及子目录fileList[i].isFile() //判断是否为文件 fileList[i].isDirectory() //判断是否 ...
- Python之文件操作:文件、目录的操作
一.创建 1.创建文件 open(path,'w') 2.创建目录 (1)os.mkdir(pt[, mode=0777]) 新建一个目录pt,参数mode表示生成的目录的权限,默认是超级权限,也就是 ...
- 12 hdfs常用文件、目录拷贝操作、删除操作
package com.da.hbase.tool.utils; import com.da.hbase.tool.common.Const; import org.apache.hadoop.con ...
- Java NIO.2 —— 文件或目录拷贝操作
拷贝整个文件树是可以递归每个目录和文件调用 Files.copy()方法.在使用的时候有一下注意事项. 在往目录拷贝文件之前,首先要保证目录已经存在.拷贝源目录(不论是否为空)都会生成目标目录.整个任 ...
- Java NIO.2 —— 文件或目录删除操作
文件删除 删除单个文件的操作很简单,如果要删除一个目录树的话,需要实现FileVisitor 接口然后递归地调用delete() 或deleteIfExists()方法.在看代码之前,需要注意一下问题 ...
- eclipse打开文件或者目录位置
1.点击Run-->External Tools-->External Tools Configurations... 右击program,点击new 2.填写名称,Location,Ar ...
随机推荐
- redis php
redis php 学习1.连接$redis = new redis();$result = $redis->connect('127.0.0.1',6379); 2.set$redis = n ...
- AMH4.2 Ftp账号路径修改设置
AMH4.2的ftp控制有点不尽如人意,每个ftp账号只能对应一个站点:如果按照面板所提供的权限,有多少个站就得设置多少个ftp账号,这一操作就会非常麻烦,造成效率低下:不过AMH5.0已经能够通过面 ...
- 05 - 替换vtkDataObject中的Update方法 VTK 6.0 迁移
VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面讨论update方法并提供迁移现有代码的建议. Update() vtkDataObject::Upd ...
- [翻译]只为图片使用IMG标签(Use IMG tags only for Images)
原文地址:Use IMG tags only for Images 首先,补充一些背景知识. web开发人员经常通过在主页预加载(预缓存)将来的页面所用到的一些资源的方式来优化网站的性能.常用的手段是 ...
- new Date参数问题
new Date支持的参数: MDN: new Date(); new Date(value); new Date(dateString); new Date(year, month, ...
- spark Association failed with [akka.tcp:sparkMaster@ip:7077]
今搭建spark集群, conf/spark-env.sh 配制如下 export SPARK_MASTER_IP=masterexport SPARK_MASTER_PORT=7077export ...
- MetaData元数据
一.基础 定义:数据库.表.列相关信息的描述. 何时使用:想取得对数据库的信息时使用. 一]数据库元数据——通过DataBaseMetaData DataBaseMe ...
- easyUI treeGrid 的小例子
今天由于业务的需要,于是采用了easyui的的treeGrid控件. <table title="Folder Browser" class="easyui-tre ...
- Android中Intent的使用
1./以下是常用到的Intent的URI及其示例,包含了大部分应用中用到的共用Intent. //一.打开一个网页,类别是Intent.ACTION_VIEW Uri uri = Uri.parse( ...
- Zookeeper为什么总是奇数个
zookeeper有这样一个特性: [集群中只要有超过过半的机器是正常工作的,那么整个集群对外就是可用的] 也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1 ...