string path = "C:/folder1/folder2/file.txt";
Какие объекты или методы я могу использовать, что даст мне результат folder2
?Получение имени папки с пути
string path = "C:/folder1/folder2/file.txt";
Какие объекты или методы я могу использовать, что даст мне результат folder2
?Получение имени папки с пути
я бы, вероятно, использовать что-то вроде:
string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName(Path.GetDirectoryName(path));
Внутренний вызов GetDirectoryName
возвращает полный путь, в то время как внешний вызов GetFileName()
возвращает последний путь компонент - который будет имя папки.
Этот подход работает, действительно ли путь существует. Однако этот подход полагается на путь, первоначально заканчивающийся на имя файла. Если неизвестно, заканчивается ли путь в имени файла или имени папки, то для этого требуется, чтобы вы проверяли фактический путь, чтобы увидеть, существует ли файл/папка в месте сначала. В этом случае ответ Дэн Димитру может быть более уместным.
Спасибо, Л.Бушкин. Хороший трюк. Я искал это. –
Другое решение: return new DirectoryInfo (fullPath) .Name; –
Гений, чистый гений! Благодаря! –
// For example:
String[] filePaths = Directory.GetFiles(@"C:\Nouveau dossier\Source");
String targetPath = @"C:\Nouveau dossier\Destination";
foreach (String FileD in filePaths)
{
try
{
FileInfo info = new FileInfo(FileD);
String lastFolderName = Path.GetFileName(Path.GetDirectoryName(FileD));
String NewDesFolder = System.IO.Path.Combine(targetPath, lastFolderName);
if (!System.IO.Directory.Exists(NewDesFolder))
{
System.IO.Directory.CreateDirectory(NewDesFolder);
}
String destFile = System.IO.Path.Combine(NewDesFolder, info.Name);
File.Move(FileD, destFile);
// Try to move
Console.WriteLine("Moved"); // Success
}
catch (IOException ex)
{
Console.WriteLine(ex); // Write error
}
}
Как это относится к вопросу? – smiron
Я использовал этот код, чтобы получить каталог на пути, когда имя файла не находится в пути:
, например, «C: \ TMP \ Test \ визуальный»;
string dir = @"c:\tmp\test\visual";
Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, ""));
Выход:
визуальный
Вы можете просто создать Path.GetFileName (dir), и оно вернет имя папки просто отлично. – jrich523
Попробуйте это:
string filename = @"C:/folder1/folder2/file.txt";
string FolderName = new DirectoryInfo(System.IO.Path.GetDirectoryName(filename)).Name;
Ниже код помогает получить имя папки только
public ObservableCollection items = new ObservableCollection(); try { string[] folderPaths = Directory.GetDirectories(stemp); items.Clear(); foreach (string s in folderPaths) { items.Add(new gridItems { foldername = s.Remove(0, s.LastIndexOf('\\') + 1), folderpath = s }); } } catch (Exception a) { } public class gridItems { public string foldername { get; set; } public string folderpath { get; set; } }
var fullPath = @"C:\folder1\folder2\file.txt";
var lastDirectory = Path.GetDirectoryName(fullPath).Split('\\').LastOrDefault();
Это некрасиво, но избегает распределения:
private static string GetFolderName(string path)
{
var end = -1;
for (var i = path.Length; --i >= 0;)
{
var ch = path[i];
if (ch == System.IO.Path.DirectorySeparatorChar ||
ch == System.IO.Path.AltDirectorySeparatorChar ||
ch == System.IO.Path.VolumeSeparatorChar)
{
if (end > 0)
{
return path.Substring(i + 1, end - i - 1);
}
end = i;
}
}
if (end > 0)
{
return path.Substring(0, end);
}
return path;
}
Простых & чистого. Только использует System.IO.FileSystem
- работает как шарм:
string path = "C:/folder1/folder2/file.txt";
string folder = new DirectoryInfo(path).Name;
DirectoryInfo делает работу раздеться имя каталога
string my_path = @"C:\Windows\System32";
DirectoryInfo dir_info = new DirectoryInfo(my_path);
string directory = dir_info.Name; // System32
Вы Хотеть имя последней папки, так что если у вас C: \ folder1 \ folder2 \ folder3 \ file.txt, вы хотите «folder3»? –