Go Package os: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Tag: Manual revert
Line 91: Line 91:
==<tt>os.Getwd()</tt>==
==<tt>os.Getwd()</tt>==
Return a rooted path name corresponding to the current directory. If the current directory can be reached via multiple paths due to symbolic links, <code>Getwd()</code> may return any one of them.
Return a rooted path name corresponding to the current directory. If the current directory can be reached via multiple paths due to symbolic links, <code>Getwd()</code> may return any one of them.
==Checking whether a File Exists==
<syntaxhighlight lang='go'>
_, err := os.Stat("/path/to/whatever")
if os.IsNotExist(err) {
  // file does not exist
}
</syntaxhighlight>


=TO DEPLETE=
=TO DEPLETE=

Revision as of 00:59, 9 January 2024

External

Internal

Overview

Package os provides a platform-independent interface to operating system functionality. The design is Unix-like, although the error handling is Go-like; failing calls return values of type error rather than error numbers. Often, more information is available within the error.

Reading and Writing an Entire File in/from Memory

Read with ReadFile()

To read the content of an entire file into a byte slice:

bs, err := os.ReadFile("/Users/ovidiu/tmp/test.txt")

os.ReadFile() closes the file after use.

Write with WriteFile()

To write in-memory data into a file:

s := "This\nis multi-line\nfile\ncontent\n"
err := os.WriteFile("/Users/ovidiu/tmp/test2.txt", []byte(s), 0777)

os.WriteFile() closes the file after use.

Sequentially Reading and Writing Byte Arrays

Reading

os.Open()

https://golang.org/pkg/os/#Open

Open the file with os.Open() and then use the File Read() method to read into a byte slice.

Works with files and directories.

bs := make([]byte, 10)
f, err := os.Open("/Users/ovidiu/tmp/test.txt")
if err != nil {
  // ...
  return
}
defer f.Close()
for {
  cnt, err := f.Read(bs)
  if err != nil {
    fmt.Println(err)
    f.Close()
    return
  }
  fmt.Println("read ", cnt, " bytes")
}

The file must be explicitly closed after use with Close().

Writing

os.Create()

https://golang.org/pkg/os/#Create

Open the file with os.Create(). It will return a os.File that implements io.Reader, io.Writer and io.Closer interfaces.

Then use the File Write() method write the content of a byte slice, or WriteString() to write strings. The file must be explicitly closed after use with Close():

var err error
f, err := os.Create("/Users/ovidiu/tmp/test3.txt")
if err != nil {
 // ...
}
_, err = f.WriteString("This is the first line\n")
if err != nil {
  // ...
}
_, err = f.WriteString("This is the second line\n")
if err != nil {
  // ...
}
err = f.Close()
if err != nil {
  // ...
}

The file content will be:

This is the first line
This is the second line

What happens if open the file with os.Open() and then I write?

Close

Local Filesystem Interaction

os.Getwd()

Return a rooted path name corresponding to the current directory. If the current directory can be reached via multiple paths due to symbolic links, Getwd() may return any one of them.

Checking whether a File Exists

_, err := os.Stat("/path/to/whatever")
if os.IsNotExist(err) {
  // file does not exist
}

TO DEPLETE

Functions

os.File

os.File Methods

FileInfo

FileInfo Methods

  • Size()

os.Args

os.Args is a string slice that holds the command-line arguments, starting with the program name. For more details on how to use see:

Command Line Parsing