Skip to content

[Feature] .NET Core 2.1 System.IO API changes #1685

Open
@JeremyKuhne

Description

@JeremyKuhne

.NET Core 2.1 System.IO API changes

There are a number of behavior changes to System.IO APIs in .NET Core 2.1 and new APIs. This issue summarizes the high level changes and links to relevant documents.

Still Needed:

  • Content Types
  • Table of Contents
  • Prioritization

General

APIs have been modified to better support cross platform code writing and substantially improve performance. Here is a summary of the API changes:

  1. Path validation has been simplified
  2. Span overloads have been added for a number of System.IO.Path APIs
  3. There is a new overload for Path.GetFullPath() that allows specifying a base path for resolving the path
  4. Directory enumeration results are more consistent cross-plat
  5. New enumeration options have been added
  6. A new extensible enumeration API has been added

Initial details are below. I'll be adding more links and details shortly.

Path Validation

To facilitate writing cross platform code, System.IO.Path APIs have had their preemptive error checking simplified. Notably:

  • Path.GetFullPath() only checks for embedded nulls, null strings, and empty strings
  • No IO APIs check for invalid characters
  • Path.GetDirectoryName() returns null for empty strings, instead of throwing
  • Search patterns are no longer validated beyond null check and rooting (they cannot return true from Path.IsPathRooted())

Span overloads

https://github.com/dotnet/corefx/issues/25539

Path.GetFullPath overload

https://github.com/dotnet/corefx/issues/25539

Enumeration API changes

https://github.com/dotnet/corefx/issues/25873

Metadata

Metadata

Assignees

No one assigned

    Labels

    🏁 Release: .NET Core 2.xIdentifies work items for the .NET Core 2.x releasesPri1Indicates issues/PRs that are high priorityPri3Indicates issues/PRs that are low priorityarea-System.IOdoc-updateUpdate outdated articles

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions