我需要从文件的当前路径向上导航一个文件夹,并在那里保存相同的文件.如何从目录路径中删除一个级别?谢谢!
C:\Users\stacy.zim\AppData\Local\Temp\ICLocal\e53486af-7e5e-4c54-b9dc-d15cb55f3f55.pdf
该文件将保存到下面.
C:\Users\stacy.zim\AppData\Local\Temp\e53486af-7e5e-4c54-b9dc-d15cb55f3f55.pdf
Eri*_*ric 11
实际上它被称为"一个文件夹"的父级
System.IO.DirectoryInfo.Parent
// Method 1 Get by file
var file = new FileInfo(@"C:\Users\stacy.zim\AppData\Local\Temp\ICLocal\e53486af-7e5e-4c54-b9dc-d15cb55f3f55.pdf");
var parentDir = file.Directory == null ? null : file.Directory.Parent; // null if root
if (parentDir != null)
{
// Do something with Path.Combine(parentDir.FullName, filename.Name);
}
Run Code Online (Sandbox Code Playgroud)
System.IO.Directory.GetParent()
// Method 2 Get by path
var parentDir = Directory.GetParent(@"C:\Users\stacy.zim\AppData\Local\Temp\ICLocal\");
Run Code Online (Sandbox Code Playgroud)
string path = @"C:\Users\stacy.zim\AppData\Local\Temp\ICLocal\e53486af-7e5e-4c54-b9dc-d15cb55f3f55.pdf"
string directory = Path.GetDirectoryName(path); //without file name
string oneUp = Path.GetDirectoryName(directory); // Temp folder
string fileOneUp = Path.Combine(oneUp, Path.GetFileName(path));
Run Code Online (Sandbox Code Playgroud)
只是要小心,如果原始文件是在根文件夹-那么oneUp会null和Path.Combine会抛出异常.
编辑:
在上面的代码中,为了清楚起见,我将命令分开在不同的行上.它可以在一行中完成:
Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(path)), Path.GetFileName(path));
Run Code Online (Sandbox Code Playgroud)
或者,正如@AlexeiLevenkov建议的那样,您可以使用..上一个目录.在这种情况下,您可以这样做:
Path.Combine(Path.GetDirectoryName(path), @"..\"+Path.GetFileName(path));
Run Code Online (Sandbox Code Playgroud)
它将为您提供您的..路径 - 如果您不想要,请运行Path.GetFullPath结果.同样,如果您的原始文件位于根文件夹中,则需要小心 - 与第一种方法不同,这将引发异常,这只会给您相同的路径.
| 归档时间: |
|
| 查看次数: |
21495 次 |
| 最近记录: |