概述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System;
public class UteCopyAllFileToKHD
{
private static string formPath = Application.dataPath + @"ArtsScenes";//原路径
private static string targetPath= @"../../../SourceCodeClientProjectAssetsArtsScenes";//目标路径
../表示当前项目文件的父路径
private static bool isNull = false;
[MenuItem("Tools/拷贝文件夹")]
static void init()
{
Copy();
}
private static void Copy()
{
isNull = false;
if(!Directory.Exists(targetPath))
{
Log.Error("未找到文件夹");
}
CleanDirectory(targetPath);
CopyDirectory(formPath, targetPath);
if (!isNull)
{
Debug.Log("Arts\Scenes目录文件导入成功!!");
}
}
/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="srcDir">起始文件夹</param>
/// <param name="tgtDir">目标文件夹</param>
public static void CopyDirectory(string srcDir, string tgtDir)
{
DirectoryInfo source = new DirectoryInfo(srcDir);
DirectoryInfo target = new DirectoryInfo(tgtDir);
if (target.FullName.StartsWith(source.FullName, StringComparison.CurrentCultureIgnoreCase))
{
throw new Exception("父目录不能拷贝到子目录!");
}
if (!source.Exists)
{
return;
}
if (!target.Exists)
{
target.Create();
}
FileInfo[] files = source.GetFiles();
DirectoryInfo[] dirs = source.GetDirectories();
if(files.Length==0&&dirs.Length==0)
{
Log.Error("当前项目中Arts\Scenes文件夹为空");
isNull = true;
return;
}
for (int i = 0; i < files.Length; i++)
{
File.Copy(files[i].FullName, Path.Combine(target.FullName, files[i].Name), true);
}
for (int j = 0; j < dirs.Length; j++)
{
CopyDirectory(dirs[j].FullName, Path.Combine(target.FullName, dirs[j].Name));
}
}
//删除目标文件夹下面所有文件
public static void CleanDirectory( string dir)
{
foreach (string subdir in Directory.GetDirectories(dir))
{
Directory.Delete(subdir, true);
}
foreach (string subFile in Directory.GetFiles(dir))
{
File.Delete(subFile);
}
}
}
最后
以上就是神勇溪流为你收集整理的unity3d学习笔记之对文件夹进行拷贝的全部内容,希望文章能够帮你解决unity3d学习笔记之对文件夹进行拷贝所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复