A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 幻想领域 于 2012-10-29 12:03 编辑

早上逛论坛的时候,看到这么一个帖http://topic.csdn.net/u/20100201/17/958c272f-2ab7-46c2-9592-afef1ec0ea28.html

大家提到用path、split、对话框SafeFileName等方法。
我中午花了点时间做了一个小案例,方便大家参考学习,欢迎一起参加讨论。
主要涉及获取文件名、目录、扩展名,以及两个字符合并为路径,CSDN的关于获取指定层目录的一个问题
http://topic.csdn.net/u/20100201/17/958c272f-2ab7-46c2-9592-afef1ec0ea28.html
主要运用的方法:
1、GetExtension:获取指定路径字符串的扩展名
2、GetPathRoot:获取指定路径字符串的根目录
3、GetFileName:获取指定字符串的文件名和扩展名
4、GetFileNameWithoutExtension:返回不具有扩展名的指定路径字符串的文件名
5、GetDirectoryName:获取指定路径字符串的目录信息
5、Combine:合并两个路径字符串
下面部分代码(完整代码请下载附件):
  1. private void btnGetFullFileName_Click(object sender, EventArgs e)
  2. {
  3. string path = cboPath.Text;
  4. string fileName = txtFileName.Text;
  5. //不使用Combine的解法
  6. //if (path.EndsWith(@"\"))
  7. //{
  8. // label3.Text = path + fileName;
  9. //}
  10. //else
  11. //{
  12. // label3.Text = path + "\\" + fileName;
  13. //}
  14. //Combine:合并两个路径字符串
  15. label9.Text = Path.Combine(path, fileName);
  16. }

  17. private void btnParentPath_Click(object sender, EventArgs e)
  18. {
  19. DirectoryInfo di = new DirectoryInfo(cboPath.Text);
  20. if (di.Parent != null)
  21. {
  22. label9.Text = di.Parent.FullName;
  23. }
  24. else
  25. {
  26. label9.Text = "已经是根目录了";
  27. }
  28. //不使用Parent的解法
  29. //string path = cboPath.Text;
  30. //if (path.EndsWith(@"\"))
  31. //{
  32. // path = path.Substring(0, path.Length - 1);
  33. // label3.Text = path.Substring(0, path.LastIndexOf(@"\") + 1);
  34. //}
  35. //else
  36. //{
  37. // label3.Text = path.Substring(0, path.LastIndexOf(@"\") + 1);
  38. //}

  39. }

  40. private void button1_Click(object sender, EventArgs e)
  41. {
  42. string str = @"C:\Documents and Settings\ty\桌面\工程测试\tttttttt\kkk\vv.txt";
  43. //通过"\\"分割字符串后,取长度-6,即从后往前数的第六项,应文件名占用了一项,第六项实际是第五层目录
  44. label11.Text = str.Split('\\')[str.Split('\\').Length - 6];

  45. }
复制代码
运行结果如下

代码中有任何问题,请指出,同时欢迎补充其他的实现思路

获取文件路径及扩展名等.zip

54.47 KB, 下载次数: 176

评分

参与人数 2技术分 +2 收起 理由
郑文 + 1 神马都是浮云
张文 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
本帖最后由 郑鹏 于 2012-10-28 14:56 编辑

呵呵!不知道微软的右击属性是怎么做出来的

你这个路径也是固定的啊!不一定只能是C:吧!我觉得可以用正则表达式匹配,提取出文件的扩展名、文件名来

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
   
我也发个IO流的解决办法·不算作弊吧

     private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openfile = new OpenFileDialog();
            openfile.Title = "选择一个文件";
            openfile.Filter = "所有文件|*.*";
            if (openfile.ShowDialog() == DialogResult.OK)
            {
                string name = openfile.FileName;
                file.Text = Path.GetFileNameWithoutExtension(name);   //去掉扩展的文件名
                fullpath.Text = name;           //完整文件名
                typename.Text = Path.GetExtension(name);  //扩展名
                pathtxt.Text = Path.GetPathRoot(name);  //根目录
                filename.Text = Path.GetFileName(name);  //完整文件名
                filedir.Text = Path.GetDirectoryName(name); //文件所在目录
            }
        }
回复 使用道具 举报
dqzg12300 发表于 2012-10-29 00:08
我也发个IO流的解决办法·不算作弊吧

     private void button1_Click(object sender, EventArgs e)

亚金也在努力啊。苏坤老师说:学编程不是看书,不是听老师讲,而是自己动手写。我想说,学编程不仅要查资料,不仅要看别人的代码,而且要自己动手写。动手写过,印象会深很多
回复 使用道具 举报
以前在公司写过一个自动打印pdf的软件。跟IO流接触多了····看到文件相关,就往那边想了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马