Opsomming van huidige mappad van station
Bestandssysteemvermeldingen die zijn verkregen met behulp van een padargument in de vorm van een 'huidige map van het station', bijvoorbeeld, C:
zijn onjuist gevormd door combinaties directory path + separator + entry name
. Als u het juiste pad voor de vermeldingen wilt retourneren, wordt het scheidingsteken niet meer toegevoegd met dergelijke paden.
Vorig gedrag
Eerder werd een scheidingsteken toegevoegd, zodat de geïnventareerde bestandssysteemvermeldingen in de hoofdmap 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 het uitvoeren 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
Versie geïntroduceerd
.NET 8
Type wijziging die fouten veroorzaken
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 die in plaats daarvan het huidige adreslijstgebruik Environment.CurrentDirectory willen inventariseren.
Betrokken 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)