1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Unity中用递归删除空文件夹和文件夹下面的子文件 meta文件保留和IO的一些操作总结

Unity中用递归删除空文件夹和文件夹下面的子文件 meta文件保留和IO的一些操作总结

时间:2019-02-15 16:36:21

相关推荐

Unity中用递归删除空文件夹和文件夹下面的子文件 meta文件保留和IO的一些操作总结

/*----------------------------------------------------------------Created by 王银文件名: FilesTools创建时间: /7/4文件功能描述: Unity中用递归删除空文件夹和文件夹下面的子文件,meta文件保留Copyright © 王银 All rights reserved.----------------------------------------------------------------*/using System.IO;using UnityEditor;using UnityEngine;namespace FilesTools{public class FilesTools{[MenuItem("GameTools/DeleteChildAndFolder &F1", false, 100)]private static void DeleteChildAndFolder(){string childItemPath = "Assets/Test/";DeleteFilesAndFolders(childItemPath);Debug.Log("删除完毕");}private static void DeleteFilesAndFolders(string path){// Delete files.string[] files = Directory.GetFiles(path);foreach (var file in files){if (!file.Contains(".meta"))File.Delete(file);}// Delete folders.string[] folders = Directory.GetDirectories(path);foreach (var folder in folders){Debug.Log($"路径:{folder} 路径下文件数:{Directory.GetFiles(folder, "*.meta").Length}");//判断是不是空的文件夹if (Directory.GetFiles(folder, "*.meta").Length <= 0){Directory.Delete(folder);}else{DeleteFilesAndFolders(folder);}}}}}

目录

System.IO相关复习、总结

结构

枚举

委托

Directory 类

注解

方法

DirectoryInfo 类

注解

备注

构造函数

字段

属性

方法

扩展方法

System.IO相关复习、总结

包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型

结构

枚举

委托

Directory 类

公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 此类不能被继承。

public static class Directory

该例演示如何从目录中检索所有文本文件,并将其移动到新目录。 移动文件后,它们不再存在于原始目录中。

[MenuItem("GameTools/MoveOperate &F2", false, 101)]private static void MoveOperate(){//将E盘Current文件夹下所有的TXT文件移动到Archive文件夹string sourceDirectory = @"E:\Current";string archiveDirectory = @"E:\Archive";try{var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");foreach (string currentFile in txtFiles){string fileName = currentFile.Substring(sourceDirectory.Length + 1);Directory.Move(currentFile, bine(archiveDirectory, fileName));}Debug.Log("move finish");}catch (Exception e){Debug.Log(e.Message);}}

该例演示如何使用EnumerateFiles,该方法从目录中检索文本文件的集合,然后在查询中使用该集合查找包含“Example”的所有行。

[MenuItem("GameTools/FindOperate &F3", false, 102)]private static void FindOperate(){//该例演示如何使用EnumerateFiles,该方法从目录中检索文本文件的集合,然后在查询中使用该集合查找包含“Example”的所有行。string archiveDirectory = @"E:\Archive";var files = from retrievedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectoriesfrom line in File.ReadLines(retrievedFile)where line.Contains("Example")select new{File = retrievedFile,Line = line};foreach (var f in files){Debug.LogFormat($"{f.File} 包含 {f.Line}");}Debug.LogFormat($"找到 {files.Count().ToString()} 行。。。");}

该例演示如何将目录及其所有文件移动到新目录。 移动原始目录后不再存在。

[MenuItem("GameTools/MoveAllOperate &F4", false, 103)]private static void MoveAllOperate(){//该例演示如何将目录及其所有文件移动到新目录。 移动原始目录后不再存在。string sourceDirectory = @"E:\Source";string destinationDirectory = @"E:\Destination";try{Directory.Move(sourceDirectory, destinationDirectory);}catch (Exception e){Debug.Log(e.Message);}}

注解

将Directory类用于典型的操作,例如复制、移动、重命名、创建和删除目录。若要创建目录,请使用其中CreateDirectory一种方法。若要删除目录,请使用其中Delete一种方法。若要获取或设置应用的当前目录,请使用GetCurrentDirectory或SetCurrentDirectory方法。若要操作DateTime与创建、访问和写入目录相关的信息,请使用如下SetLastAccessTimeSetCreationTime方法:类的Directory静态方法对所有方法执行安全检查。 如果要多次重复使用对象,请考虑改用相应的实例方法DirectoryInfo,因为安全检查并不总是必要的。如果只执行一个与目录相关的操作,则使用静态Directory方法而不是相应的DirectoryInfo实例方法可能更高效。 大多数Directory方法都需要你正在操作的目录的路径。

方法

DirectoryInfo 类

公开用于创建、移动和枚举目录和子目录的实例方法。 此类不能被继承。

public sealed class DirectoryInfo : System.IO.FileSystemInfo

以下示例演示了DirectoryInfo类的一些主要成员。

[MenuItem("GameTools/DirectoryInfoOperate &F5", false, 104)]private static void DirectoryInfoOperate(){DirectoryInfo di = new DirectoryInfo(@"E:\MyDir");try{if (di.Exists){Debug.Log("That path exists already.");return;}di.Create();Debug.Log("The directory was created successfully.");di.Delete();Debug.Log("The directory was deleted successfully.");}catch (Exception e){Debug.LogErrorFormat($"The process failed: {e}");}}

以下示例演示如何复制目录及其内容。

[MenuItem("GameTools/DirectoryInfoCopyAllOperate &F6", false, 105)]private static void DirectoryInfoCopyAllOperate(){string sourceDirectory = @"E:\Current\SourceDirectory";string targetDirectory = @"E:\Current\TargetDirectory";DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);CopyAll(diSource, diTarget);}public static void CopyAll(DirectoryInfo source, DirectoryInfo target){if (source.FullName.ToLower() == target.FullName.ToLower()){return;}if (Directory.Exists(target.FullName) == false){Directory.CreateDirectory(target.FullName);}foreach (FileInfo fi in source.GetFiles()){Debug.Log($"Copying {target.FullName} ---> {fi.Name}");fi.CopyTo(bine(target.ToString(), fi.Name), true);}foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()){DirectoryInfo nextTargetSubDir =target.CreateSubdirectory(diSourceSubDir.Name);CopyAll(diSourceSubDir, nextTargetSubDir);}}

注解

将 DirectoryInfo 类用于典型的操作,例如复制、移动、重命名、创建和删除目录。

如果要多次重用对象,请考虑使用实例方法,而不是Directory类的相应静态方法 ,因为安全检查并不总是必要的。

备注

在接受路径作为输入字符串的成员中,该路径的格式必须良好或引发异常。 例如,如果路径完全限定,但以空格开头,则路径不会在类的方法中修整。 因此,路径格式不正确,并引发异常。 同样,路径或路径的组合不能完全限定两次。 例如,在大多数情况下,“c:\temp c:\windows”也会引发异常。 使用接受路径字符串的方法时,请确保路径格式良好。

在接受路径的成员中,路径可以引用文件或仅引用目录。 指定的路径还可以引用服务器和共享名称的相对路径或通用命名约定 (UNC) 路径。

构造函数

字段

属性

方法

扩展方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。