如何从路径字符串中删除文件名?

11

这是一行代码:

string f = Path.GetFullPath("c:\\t.txt").Replace(":", "").Replace("\\", "/");

我尝试了一些方法:string t = f.LastIndexOf(“/”);但没有效果。 现在的f是:c/t.txt 我需要f只是c /,如果目录和文件名是:c:\ subdir \ sub \ t.txt,那么最后f应该是:c / subdir / sub,而不是t.txt。
我现在尝试了这个方法:
问题是当我执行以下操作时:
f.TargetFolder = Path.GetDirectoryName(txf);
f.TargetFolder = Path.GetFullPath(txf).Replace(":", "").Replace("\\", "/");

第二行使用Replace方法后,结果给我留下了C/test.txt。我尝试只替换字符串本身而不是使用GetFullPath方法,但在TargetFolder中仍然得到了相同的结果,即c/test.txt,而我需要的只是c/。使用Replace方法的这一行不好,它不能给我想要的结果。


5
Path.GetDirectoryName(); 的意思是获取路径中的目录名。根据需要进行替换。 - Alex K.
2
你为什么想要切换斜杠? - Jon Skeet
你为什么想要从根目录中删除 : 字符? - rory.ap
还是像 f = f.Substring(0, f.Length - 5); 这样? - w.b
由于我正在将文件上传到我的FTP服务器,上传文件的路径格式应为:ftp://ftp.mysite.com/c/test.txt,因此test.txt文件将位于c目录中。我不想在我的FTP服务器上拥有C:作为目录。 - Jorge Hyyest
1个回答

33

使用Path.GetDirectoryName方法获取表示包含该文件的目录的文件路径部分。例如:

Path.GetDirectoryName("C:\\path\\to\\file.txt"); // returns C:\path\to

更多例子:

INPUT                              OUTPUT
---------------------------------  ------------------------
C:\path\to\file.txt                C:\path\to
C:\path\to\                        C:\path\to
C:\path\to                         C:\path
C:\path\                           C:\path
C:\path                            C:\
C:\                                (null)
C:                                 (null)
\path\to\file.txt                  \path\to
path\to\file.txt                   path\to
\\server\share\path\to\file.txt    \\server\share\path\to
\\server\share                     (null)
\\server                           (null)

(null) 表示返回值为 null 值,而不是字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接