Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bestandssysteemvermeldingen die zijn verkregen met behulp van een padargument in de vorm van de 'huidige map van een station', bijvoorbeeld, C:
, waren onjuist gevormd door te combineren met directory path + separator + entry name
. Om het juiste pad voor de vermeldingen terug te geven, wordt het scheidingsteken niet meer toegevoegd bij dergelijke paden.
Vorig gedrag
Eerder werd een scheidingsteken toegevoegd, zodat de genummerde bestandssysteemvermeldingen in de root van het station verschenen.
string pathToEnumerate = "C:";
Console.WriteLine($"Full path of \"{pathToEnumerate}\" is {Path.GetFullPath(pathToEnumerate)}.");
Path.GetFullPath(pathToEnumerate);
Console.WriteLine($"Enumerating files and folders in \"{pathToEnumerate}\".");
foreach (string entry in Directory.GetFileSystemEntries(pathToEnumerate))
{
Console.WriteLine(entry);
}
De uitvoer van dit codefragment is als volgt.
Full path of "C:" is C:\Users\myalias\consoleapps\Program
Enumerating files and folders in "C:".
C:\Program.csproj
C:\Program.sln
C:\bin
C:\obj
C:\Program.cs
Nieuw gedrag
Het uitvoeren van hetzelfde codefragment in .NET 8 en latere versies produceert uitvoer zonder scheidingsteken in elk pad.
Full path of "C:" is C:\Users\myalias\consoleapps\Program.
Enumerating files and folders in "C:".
C:Program.csproj
C:Program.sln
C:bin
C:obj
C:Program.cs
Geïntroduceerde versie
.NET 8
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Gebruikers hebben gemeld dat het vorige gedrag onjuist was. Het was ook een regressie van .NET Framework.
Aanbevolen actie
Als u een Windows-gebruiker bent die afhankelijk is van inventarisatie van paden zoals C:
, moet u de I/O-bewerkingen van uw toepassing opnieuw evalueren. Dit is een ongebruikelijk scenario dat waarschijnlijk niet in productie zal worden gebruikt. De meeste gebruikers willen liever de huidige directory inventariseren met Environment.CurrentDirectory.
Betreffende API's
- System.IO.Directory.EnumerateFiles
- System.IO.Directory.EnumerateDirectories
- System.IO.Directory.EnumerateFileSystemEntries
- System.IO.Directory.GetFiles
- System.IO.Directory.GetDirectories
- System.IO.Directory.GetFileSystemEntries
- System.IO.DirectoryInfo.EnumerateFiles
- System.IO.DirectoryInfo.EnumerateDirectories
- System.IO.DirectoryInfo.EnumerateFileSystemInfos
- System.IO.DirectoryInfo.GetFiles
- System.IO.DirectoryInfo.GetDirectories
- System.IO.DirectoryInfo.GetFileSystemInfos
- FileSystemEnumerable<TResult>(String, FileSystemEnumerable<TResult>.FindTransform, EnumerationOptions)