Daniel Martí has uploaded this change for review.
io/ioutil: provide an equivalent for the deprecated ReadDir
All APIs in the now-deprecated io/ioutil package have a direct
replacement in either the io or os package with the same signature,
with the notable exception of ioutil.ReadDir, as os.ReadDir has a
slightly different signature with fs.DirEntry rather than fs.FileInfo.
New code can easily make use of []fs.DirEntry directly,
but existing code may need to continue using []fs.FileInfo for backwards
compatibility reasons. For instance, I had a bit of code that exposed
the slice as a public API, like:
return ioutil.ReadDir(name)
It took me a couple of minutes to figure out what the exact equivalent
in terms of os.ReadDir would be, and a code sample would have helped.
Add one for future reference.
For #42026.
For #51927.
Change-Id: I76d46cd7d68fc609c873821755fdcfc299ffd56c
---
M src/io/ioutil/ioutil.go
1 file changed, 39 insertions(+), 0 deletions(-)
diff --git a/src/io/ioutil/ioutil.go b/src/io/ioutil/ioutil.go
index 9921c2a..7bcd4f2 100644
--- a/src/io/ioutil/ioutil.go
+++ b/src/io/ioutil/ioutil.go
@@ -55,6 +55,17 @@
// it returns a list of fs.DirEntry instead of fs.FileInfo,
// and it returns partial results in the case of an error
// midway through reading a directory.
+//
+// If you must continue obtaining a list of fs.FileInfo, you still can:
+//
+// entries, err := os.ReadDir(name)
+// if err != nil { ... }
+// infos := make([]fs.FileInfo, len(entries))
+// for i, entry := range entries {
+// info, err := entry.Info()
+// if err != nil { ... }
+// infos[i] = info
+// }
func ReadDir(dirname string) ([]fs.FileInfo, error) {
f, err := os.Open(dirname)
if err != nil {
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.
Daniel Martí uploaded patch set #2 to this change.
io/ioutil: provide an equivalent for the deprecated ReadDir
All APIs in the now-deprecated io/ioutil package have a direct
replacement in either the io or os package with the same signature,
with the notable exception of ioutil.ReadDir, as os.ReadDir has a
slightly different signature with fs.DirEntry rather than fs.FileInfo.
New code can easily make use of []fs.DirEntry directly,
but existing code may need to continue using []fs.FileInfo for backwards
compatibility reasons. For instance, I had a bit of code that exposed
the slice as a public API, like:
return ioutil.ReadDir(name)
It took me a couple of minutes to figure out what the exact equivalent
in terms of os.ReadDir would be, and a code sample would have helped.
Add one for future reference.
For #42026.
For #51927.
Change-Id: I76d46cd7d68fc609c873821755fdcfc299ffd56c
---
M src/io/ioutil/ioutil.go
1 file changed, 39 insertions(+), 0 deletions(-)
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.
Attention is currently required from: Daniel Martí.
Patch set 2:Code-Review +1
1 comment:
File src/io/ioutil/ioutil.go:
Patch Set #2, Line 63: // infos := make([]fs.FileInfo, len(entries))
(nit) I'd prefer to allocate this slice with length 0 and use `append`, rather than risk returning it with trailing nils in case of an error.
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.
Attention is currently required from: Daniel Martí.
Daniel Martí uploaded patch set #3 to this change.
io/ioutil: provide an equivalent for the deprecated ReadDir
All APIs in the now-deprecated io/ioutil package have a direct
replacement in either the io or os package with the same signature,
with the notable exception of ioutil.ReadDir, as os.ReadDir has a
slightly different signature with fs.DirEntry rather than fs.FileInfo.
New code can easily make use of []fs.DirEntry directly,
but existing code may need to continue using []fs.FileInfo for backwards
compatibility reasons. For instance, I had a bit of code that exposed
the slice as a public API, like:
return ioutil.ReadDir(name)
It took me a couple of minutes to figure out what the exact equivalent
in terms of os.ReadDir would be, and a code sample would have helped.
Add one for future reference.
For #42026.
For #51927.
Change-Id: I76d46cd7d68fc609c873821755fdcfc299ffd56c
---
M src/io/ioutil/ioutil.go
1 file changed, 39 insertions(+), 0 deletions(-)
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.
Attention is currently required from: Bryan Mills.
1 comment:
File src/io/ioutil/ioutil.go:
Patch Set #2, Line 63: // infos := make([]fs.FileInfo, len(entries))
(nit) I'd prefer to allocate this slice with length 0 and use `append`, rather than risk returning i […]
Good point; done. I tend to prefer avoiding append for the sake of performance, as it's technically not needed, but if we may return early I agree that avoiding append adds a sharp edge that we could do without.
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.
Attention is currently required from: Daniel Martí.
Patch set 3:Run-TryBot +1Code-Review +1
Attention is currently required from: Daniel Martí.
Patch set 3:Run-TryBot +1Auto-Submit +1Code-Review +2
Gopher Robot submitted this change.
io/ioutil: provide an equivalent for the deprecated ReadDir
All APIs in the now-deprecated io/ioutil package have a direct
replacement in either the io or os package with the same signature,
with the notable exception of ioutil.ReadDir, as os.ReadDir has a
slightly different signature with fs.DirEntry rather than fs.FileInfo.
New code can easily make use of []fs.DirEntry directly,
but existing code may need to continue using []fs.FileInfo for backwards
compatibility reasons. For instance, I had a bit of code that exposed
the slice as a public API, like:
return ioutil.ReadDir(name)
It took me a couple of minutes to figure out what the exact equivalent
in terms of os.ReadDir would be, and a code sample would have helped.
Add one for future reference.
For #42026.
For #51927.
Change-Id: I76d46cd7d68fc609c873821755fdcfc299ffd56c
Reviewed-on: https://go-review.googlesource.com/c/go/+/399854
Reviewed-by: Bryan Mills <bcm...@google.com>
Run-TryBot: Bryan Mills <bcm...@google.com>
TryBot-Result: Gopher Robot <go...@golang.org>
Reviewed-by: Ian Lance Taylor <ia...@google.com>
Run-TryBot: Ian Lance Taylor <ia...@google.com>
Auto-Submit: Ian Lance Taylor <ia...@google.com>
---
M src/io/ioutil/ioutil.go
1 file changed, 46 insertions(+), 0 deletions(-)
diff --git a/src/io/ioutil/ioutil.go b/src/io/ioutil/ioutil.go
index 9921c2a..6a1d691 100644
--- a/src/io/ioutil/ioutil.go
+++ b/src/io/ioutil/ioutil.go
@@ -55,6 +55,17 @@
// it returns a list of fs.DirEntry instead of fs.FileInfo,
// and it returns partial results in the case of an error
// midway through reading a directory.
+//
+// If you must continue obtaining a list of fs.FileInfo, you still can:
+//
+// entries, err := os.ReadDir(dirname)
+// if err != nil { ... }
+// infos := make([]fs.FileInfo, 0, len(entries))
+// for _, entry := range entries {
+// info, err := entry.Info()
+// if err != nil { ... }
+// infos = append(infos, info)
+// }
func ReadDir(dirname string) ([]fs.FileInfo, error) {
f, err := os.Open(dirname)
if err != nil {
To view, visit change 399854. To unsubscribe, or for help writing mail filters, visit settings.