Réponses
Trop de publicités?Je serais probablement utiliser quelque chose comme:
string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );
L'appel intérieur à l' GetDirectoryName
sera de retour le chemin d'accès complet, tandis que l'extérieur appel à l' GetFileName()
sera de retour le dernier composant du chemin - qui sera le nom du dossier.
Cette approche fonctionne si oui ou non le chemin d'accès existe réellement. Cette approche, cependant, dépendent de la voie d'abord se terminant par un nom de fichier. Si on ne sait pas si le chemin se termine dans un nom de fichier ou le nom du dossier - alors il faut que vous vérifiez le chemin d'accès réel pour voir si un fichier/dossier existe à l'emplacement de la première. Dans ce cas, Dan Dimitru de réponse peut être plus approprié.
// 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
}
}