.net及.net core如何打开文件夹?如何打开.exe?如何打开.txt文本?如何打开*.*文件

大道至简!

using System;
using System.Diagnostics;

namespace CommonUtils
{
    /// <summary>
    /// 进程管理
    /// </summary>
    public class ProcessUtil
    {
        /// <summary>
        /// 运行进程
        /// </summary>
        /// <param name="process">.net core环境下这里只能写exe .net环境可以直接写文件路径,框架会查找默认程序</param>
        /// <param name="argument">参数</param>
        public static void Run(string process, string argument = null)
        {
            try
            {
                if (string.IsNullOrEmpty(argument))
                    Process.Start(process);
                else
                    Process.Start(process, argument);
            }
            catch (Exception ex)
            {
                Console.WriteLine(process + " " + argument);
                Console.WriteLine(ex);
            }
        }

        /// <summary>
        /// 关闭进程
        /// </summary>
        public static void Kill(int pid)
        {
            try
            {
                var process = Process.GetProcessById(pid);
                if (process != null)
                    process.Kill();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Pid: " + pid);
                Console.WriteLine(ex);
            }
        }

        /// <summary>
        /// 关闭进程
        /// </summary>
        public static void Kill(string name)
        {
            try
            {
                var processes = Process.GetProcessesByName(name);
                foreach (var process in processes)
                    process.Kill();
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProcessName: " + name);
                Console.WriteLine(ex);
            }
        }
    }
}

如何打开文件夹:(public static class FloderUtil)

        /// <summary>
        /// 打开文件夹
        /// </summary>
        public static void Open(string path)
        {
            ProcessUtil.Run(@"C:\Windows\explorer.exe", path);
        }

如何打开exe:ProcessUtil.Run

如何打开txt:(public static class FileUtil)

        /// <summary>
        /// 文本相关程序
        /// </summary>
        private static string[] mTextProcesses = {
            @"C:\Program Files\Notepad\notepad++.exe",
            @"D:\Program Files\Notepad\notepad++.exe",
            @"C:\Program Files\Notepad++\notepad++.exe",
            @"D:\Program Files\Notepad++\notepad++.exe",
            @"C:\Program Files (x86)\Notepad\notepad++.exe",
            @"D:\Program Files (x86)\Notepad\notepad++.exe",
            @"C:\Program Files (x86)\Notepad++\notepad++.exe",
            @"D:\Program Files (x86)\Notepad++\notepad++.exe",
            @"C:\Windows\notepad.exe",
           };

        /// <summary>
        /// 打开文本
        /// </summary>
        public static void OpenText(string path)
        {
            foreach (var process in mTextProcesses)
            {
                if (Exists(process))
                {
                    ProcessUtil.Run(process, path);
                    break;
                }
            }
        }

如何打开*.*文件:(public static class FileUtil)

        /// <summary>
        /// 打开文件,相对路径经常会出问题,这个最好传入完整路径
        /// 这里为什么不把process写前面,与ProcessUtil.Open参数统一呢?
        /// 为了兼容.net,.net打开文件会查找默认程序,不用指定程序
        /// </summary>
        public static void Open(string path, string process = null)
        {
            //如果没有指定程序,路径即为程序
            if (process == null)
                ProcessUtil.Run(path);
            //如果指定了程序,路径为参数
            else
                ProcessUtil.Run(process, path);
        }

测试代码:

    class Program
    {
        static void Main(string[] args)
        {
            //遍历文本程序打开文本
            FileUtil.OpenText(@"D:\Test\Test1.txt");

            //默认文本程序打开文本
            //FileUtil.Open(@"D:\Test\Test2.txt");//!!!这种写法仅支持.net不支持core

            //指定记事本打开文本
            FileUtil.Open(@"D:\Test\Test3.txt", @"C:\Windows\notepad.exe");
            //ProcessUtil.Run(@"C:\Windows\notepad.exe",@"D:\Test\Test3.txt");同上

            //开个写字板测试用
            FileUtil.Open(@"C:\Windows\write.exe");

            //打开文件夹
            FloderUtil.Open(@"D:\Test");

            //ProcessUtil.Kill("notepad++");//关闭测试

            Console.WriteLine("Press enter to exit...");
            Console.ReadLine();
        }
    }

如果还没看懂,或者不会搭环境,源码在此:

https://gitee.com/atalent/CommonUtils-dot-net-core

猜你喜欢

转载自blog.csdn.net/fromfire2/article/details/86140544
今日推荐