dotnet / dotnet/dotnet-api-docs

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

Open
#1,685 8 comments 0 reactions 0 assignees View on GitHub
:checkered_flag: Release: .NET Core 2.x area-System.IO doc-update Pri1 Pri3
Dominant language
C#
Stars
949
Forks
1.7k
Avg merge
3d 27m
Merged PRs (30d)
49

Description

# .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
- [x] 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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.