文章目录
👉一、前言
通常项目中有导出文件或文件夹功能需求时,类似Unity导出包或打包exe一样,都要让用户选择路径,并输入指定名称,将导出的文件或文件夹命名为用户输入的名称。刚开始我想到的方法是使用System.IO命名空间下的File类的Move方法或FileInfo类的MoveTo方法来实现,但实践发现并不通用,所以只能另寻他法。终于让我找到了一种在Unity中通用性比较好的重命名文件夹和文件的方法,可直接对指定路径下的文件夹或文件重命名。
👉二、准备工作
1、推荐使用搜索工具Everything
在准备工作开始之前,推荐大家使用Everything搜索工具,可以帮助我们快速找到你想要的文件或文件夹。Everthing中文版是功能强大的搜索工具,可以搜索出你电脑中的各种文件,无论它隐藏在哪一个角落都可以找得到,支持32位、64位系统。
2、导入Microsoft.VisualBasic.Dll和System.Deployment.Dll文件
这时搜索工具Everything就派上用途了,因为我提到的这两个dll库,虽然是Unity安装路径下也有,但是有的没有实现文件夹或文件重命名的方法;有的因为实现平台.NET有点高不适用。因为我当前项目的脚本运行平台是.net3.5,所以我只能从电脑上查找.net3.5平台下的这两个库Microsoft.VisualBasic.Dll和System.Deployment.Dll,打开搜索工具,直接搜这两个库,你可能会看到一大堆结果,但你要选择符合你当前工程的.net平台的dll将其导入,否则导入用不了或者报错。(如果找不到可以留言或私信我发给你)
👉三、搭建demo场景实现用户选择文件夹或文件重命名的方法
1、简单搭建demo场景
新建两个按钮组件,演示将用户选择的文件夹和文件重命名为指定名称。
2、写个脚本实现对电脑文件夹或文件重命名的逻辑
using UnityEngine;
using UnityEngine.UI;
using Microsoft.VisualBasic.Devices;
using Crosstales.FB;
using System.IO;
public class Rename : MonoBehaviour
{
public Button renameFolder;
public Button renameFile;
void Start()
{
renameFolder.onClick.AddListener(RenameFolderClick);
renameFile.onClick.AddListener(RenameFileClick);
}
/// <summary>
/// 重命名文件夹
/// </summary>
private void RenameFolderClick()
{
string folderPath = FileBrowser.OpenSingleFolder("请选择一个文件夹", "");//打开资源浏览器用用户选择文件夹
if (!string.IsNullOrEmpty(folderPath))
{
if (Directory.Exists(folderPath))//判读文件夹是否存在
{
Computer computer = new Computer();//声明一个computer对象
computer.FileSystem.RenameDirectory(folderPath, "文档");//将选择的文件夹重命名为“文档”
}
}
}
/// <summary>
/// 重命名文件
/// </summary>
private void RenameFileClick()
{
string filePath = FileBrowser.OpenSingleFile("请选择一个文件","","docx");//打开资源浏览器用用户选择一个文档
if (!string.IsNullOrEmpty(filePath))
{
if (File.Exists(filePath))//判读文件是否存在
{
Computer computer = new Computer();//声明一个computer对象
computer.FileSystem.RenameFile(filePath, "unity教程.docx");//将选择的文件重命名为“unity教程”注意要加文件后缀名
}
}
}
}
注意事项:Computer 类在Microsoft.VisualBasic.Devices命名空间下,使用前需先引用此命名空间。RenameDirectory()方法需要传入文件夹的路径作为第一参数,第二个参数是重命名的文件夹新名称;RenameFile()方法需要传入文件的路径作为第一参数,第二个参数是重命名的文件新名称,需要加上文件后缀名!!!
3、重命名功能演示
-
文件夹重命名
可以看到已经成功将我选择的Assets/Data/folder文件夹重命名为文档:
-
文件重命名
可以看到已经成功将我选择的Assets/Data/文档/新建 DOCX 文档.docx文件重命名为unity教程.docx: