unity 打开指定路径文件夹

public static void OpenDirectory(string path){
    if (string.IsNullOrEmpty(path)) return;

    path=path.Replace("/", "\\");
    if (!Directory.Exists(path)){
        Debug.LogError("No Directory: " + path);
        return;
    }
    //可能360不信任
    System.Diagnostics.Process.Start("explorer.exe", path);
}
public static void OpenDirectory(string path){
    // 新开线程防止锁死
    Thread newThread=new Thread(new ParameterizedThreadStart(CmdOpenDirectory));
    newThread.Start(path);
}

private static void CmdOpenDirectory(object obj){
    Process p = new Process();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Arguments = "/c start " + obj.ToString();
    UnityEngine.Debug.Log(p.StartInfo.Arguments);
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.CreateNoWindow = true;
    p.Start();

    p.WaitForExit();
    p.Close();
}

支持MAC

public static void OpenDirectory(string path){
    if (string.IsNullOrEmpty(path)) return;

    if (!Directory.Exists(path)){
        UnityEngine.Debug.LogError("No Directory: " + path);
        return;
    }

    //Application.dataPath 只能在主线程中获取
    int lastIndex = Application.dataPath.LastIndexOf("/");
    shellPath = Application.dataPath.Substring(0, lastIndex) + "/Shell/";

    // 新开线程防止锁死
    Thread newThread = new Thread(new ParameterizedThreadStart(CmdOpenDirectory));
    newThread.Start(path);
}

private static void CmdOpenDirectory(object obj){
    Process p = new Process();
#if UNITY_EDITOR_WIN
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Arguments = "/c start " + obj.ToString();
#elif UNITY_EDITOR_OSX
    p.StartInfo.FileName = "bash";
    string shPath = shellPath + "openDir.sh";
    p.StartInfo.Arguments = shPath + " " + obj.ToString();
#endif
    //UnityEngine.Debug.Log(p.StartInfo.Arguments);
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.CreateNoWindow = true;
    p.Start();

    p.WaitForExit();
    p.Close();
}

openDir.sh

#!/bin/bash
tempDirectory=$*

echo "${tempDirectory}"
open "${tempDirectory}"

https://blog.csdn.net/zp288105109a/article/details/81366343

原文地址:https://www.cnblogs.com/kingBook/p/11602507.html

时间: 2024-10-11 08:05:10

unity 打开指定路径文件夹的相关文章

[Android]用图库打开指定的文件夹,没错是第一个画面直接是图库的文件夹画面

参考了这个里面的代码 http://bbs.csdn.net/topics/380084274 一直报错 06-16 23:58:50.698 26148-26161/com.example.myapplication.app W/ContentResolver﹕ Failed to get type for: content://media/external/images/media/120818 (Unknown URL : content://media/external/images/m

判断指定路径文件夹是否存在,如果不存在就新建文件夹

void CWireLessDlg::CreatePakcetFile(){ CString   strFolderPath; strFolderPath = _T("D:\\无线通信板报文存储文件夹"); if(!PathIsDirectory(strFolderPath))//判断路径是否存在        CreateDirectory(strFolderPath,NULL);//新建文件夹 strFolderPath = _T("D:\\无线通信板报文存储文件夹\\U

net C# 打开指定的文件或者文件夹

1.直接打开指定的文件 System.Diagnostics.Process.Start(v_OpenFilePath); 2.直接打开目录 string v_OpenFolderPath = @"目录路径"; System.Diagnostics.Process.Start("explorer.exe", v_OpenFolderPath); 原文地址:https://www.cnblogs.com/iwmz/p/10569798.html

atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php

atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服务器文件夹挑选文件,在返回... 1 2. 在线文件管理器要实现的基本的功能::指定开始目录,指定getfile回调 1 3. 组件选型:: elFinder (3M) ,,php web ftp 1 4. elFinder 的概念 1 5. elFinder  1.x 的使用过程 2 6. elF

Qt 编程指南 4 按钮2 打开网页和文件夹

功能:  按键打开文件夹和网页 效果: 教程 1 添加两个链接按钮   分别命名 commandLinkButtonFolder 和  commandLinkButtonWeb 2 创建项目 改变调试平台 3 主函数 #include "Qt_Button.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Qt_Button

每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容

前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望能够对大家有所帮助. 1.   在列表中为列表项添加子项 为列表添加子项大家都很熟悉,但是如何为列表项添加子项呢?例如列表项是一个文件夹,如何为该文件夹添加子项呢?这里就用到了List.AddItem()方法,具体示例如下: 首先我们要获取列表中的子项: SPListItem root_item=l

Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this);     QFileInfo fileinfo(appUrl);     QString appPath = QApplication::applicationDirPath()+SAVEDIR+"/"+fileinfo.fileName();     bool res = proce

Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)

下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this);     QFileInfo fileinfo(appUrl);     QString appPath = QApplication::applicationDirPath()+SAVEDIR+"/"+fileinfo.fileName();     bool res = proce

【只怕没有几个人能说清楚】系列之二:Unity中的特殊文件夹

参考:http://www.manew.com/thread-99292-1-1.html 1. 隐藏文件夹     以.开头的文件夹会被忽略.在这种文件夹中的资源不会被导入,脚本不会被编译.也不会出现在Project视图中.这种文件我们可以在资源浏览器的时候,能找到这些文件. 2. Standard Assets     在这个文件夹中的脚本最先被编译.一般是放一些Unity 内置的一些资源.     这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass, Assem