C# 文件与路径操作

OpenFileDialog

private void btnOpenFileDialog_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = @"C:\SeeSharp\LYH";                   //设置起始路径
            openFileDialog.Title = "打开文件";                                      //对话框标题
            openFileDialog.Filter = "JXI Vector file|*.iq|实信号|*.if";             //设置过滤器
            openFileDialog.FilterIndex = 1;                                         //默认过滤器中类型
            openFileDialog.Multiselect = false;                                     //是否允许多选
            openFileDialog.RestoreDirectory = true;                                 //再次打开是否记住上次路径
            if (openFileDialog.ShowDialog() != DialogResult.OK) return;             //打开对话框,对话框结果不为OK则返回
            if (openFileDialog.Multiselect)
            {
                textBox1.Text = "";
                foreach (var item in openFileDialog.FileNames) { textBox1.AppendText(item + "\r\n"); }
            }
            else
            {
                textBox1.Text = openFileDialog.FileName;
            }
        }

SaveFileDialog

private void btnSaveFileDialog_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Title = "打开文件";                                      //对话框标题
            saveFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";  //设置过滤器
            saveFileDialog.FilterIndex = 0;                                         //默认过滤器中类型
            saveFileDialog.RestoreDirectory = true;                                 //保存对话框是否记忆上次打开的目录
            if (saveFileDialog.ShowDialog() != DialogResult.OK) return;             //打开对话框,对话框结果不为OK则返回
            textBox1.Text = saveFileDialog.FileName;
        }

FolderBrowserDialog

private void btnFolderBrowserDialog_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
            folderBrowserDialog.SelectedPath = @"C:\SeeSharp\LYH\SeeSharpTools";        //设置默认路径
            folderBrowserDialog.Description = "请选择一个文件夹";                       //设置提示信息
            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)                    //打开对话框 //获取选中结果
            {
                textBox1.Text = folderBrowserDialog.SelectedPath;
            }
        }

获取特殊目录

static void SpecialDirectory()
        {
            string dir;            

            //获取当前目录(即该进程从中启动的目录)的完全限定路径。
            dir = Environment.CurrentDirectory;
            //备注 按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:/”)。
            //如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:/mySubDirectory”)。
            dir = Directory.GetCurrentDirectory();

            //获取当前目录的上级目录
            dir = Path.GetFullPath("..");

            //桌面路径
            dir = "桌面路径:" 
                + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

            //ProgramData文件夹路径
            dir = "ProgramData文件夹路径:" 
                + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

            //我的文档文件夹路径
            dir = "我的文档文件夹路径" 
                + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
           
            //获得当前可执行的exe文件名
            dir = "Process.GetCurrentProcess().MainModule.FileName:" 
                + Process.GetCurrentProcess().MainModule.FileName;
           
            //获取基目录,它由程序集冲突解决程序用来探测程序集。
            dir = "AppDomain.CurrentDomain.BaseDirectory:" 
                + AppDomain.CurrentDomain.BaseDirectory;
          
            //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。(如:D:/project/集团客户短信服务端/bin/Debug)
            dir = "System.Windows.Forms.Application.StartupPath:" 
                + System.Windows.Forms.Application.StartupPath;
           
            //获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
            dir = "System.Windows.Forms.Application.ExecutablePath:" 
                + System.Windows.Forms.Application.ExecutablePath;
           
            //获取或设置包含该应用程序的目录的名称。 
            dir = "AppDomain.CurrentDomain.SetupInformation.ApplicationBase:" 
                + AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            
            Console.ReadKey();
        }

获取当前目录及其父目录

        /// <summary>
        /// 获取当前目录及当前目录第n级的父目录
        /// </summary>
        /// <param name="level">父目录级别,大于等于0</param>
        /// <returns></returns>
        public static string CurrentDirectory(int level=0)
        {
            string str = Environment.CurrentDirectory;
            for (int i = 0; i < level; i++)
                str = str.Substring(0, str.LastIndexOf(@"\"));
            return str;
        }

获取已知路径中的元素

static void pth()
        {
            string dir;
            string filePath = "C:\\JiYF\\BenXH\\BenXHCMS.xml";       
            dir = "获取文件的全路径:" + Path.GetFullPath(filePath);//-->C:\JiYF\BenXH\BenXHCMS.xml           
            dir = "获取文件所在的目录:" + Path.GetDirectoryName(filePath);//-->C:\JiYF\BenXH           
            dir = "获取文件的名称含有后缀:" + Path.GetFileName(filePath);//-->BenXHCMS.xml           
            dir = "获取文件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMS           
            dir = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath);//-->.xml            
            dir = "获取路径的根目录:" + Path.GetPathRoot(filePath);//-->C:\
            Console.ReadKey();
        }

获取指定路径下的文件与子目录

static void Main(string[] args)
        {
            // 获取目标目录信息
            string selectedDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); ;
            Console.WriteLine("Open : " + selectedDir+"\n");
            DirectoryInfo root = new DirectoryInfo(selectedDir);

            // 从目标目录信息中获取目录中文件信息
            FileInfo[] fileInfo = root.GetFiles("*.txt");
            Console.WriteLine("*.txt file list start...");
            foreach (var file in fileInfo)
            {
                Console.WriteLine("new txt file:" + file.FullName);
            }

            // 从目标目录信息中获取子目录信息
            Console.WriteLine("\r\n\r\n sub dir list start...");
            DirectoryInfo[] subDirList = root.GetDirectories();
            foreach (var subDir in subDirList)
            {
                Console.WriteLine("find sub dir:" + subDir.FullName);
            }

            Console.WriteLine("\nDone...");
            Console.Read();
        }

代码运行结果如下

image

文件操作

private void FileOperations()
        {
            string sourcePath = "sourcePath";
            string destpath = "destpath";
            
            //复制文件到目标路径
            File.Copy(sourcePath, destpath);

            //删除制定文件
            File.Delete(sourcePath);

            //移动文件到目标路径【重命名的实现方法】
            //sourcePath与destpath在不同目录下则为文件的移动,在同一目录下则为文件的重命名
            File.Move(sourcePath, destpath);

            //打开一个文本文件*.txt ,读取文件中数据,然后关闭该文件
            File.ReadAllText(sourcePath);

            //创建一个文件,向其中写入数据,如果此路径下有同名文件则会覆盖
            //【PS:对文件进行写入操作,如果路径下有同名文件则会进行覆盖,所以最好进行一次判断,跟用户交互一下在进行覆盖】
            File.WriteAllText(sourcePath, "要写入文件的字符串"); 
        }
参考 https://www.cnblogs.com/Zhang-silence/p/6866722.html 
posted @ 2018-06-22 18:59  蛮哥哥  阅读(1233)  评论(0编辑  收藏  举报