Hone logo
Hone
Problems

File Operations in Go: A Practical Challenge

This challenge focuses on implementing fundamental file operations in Go. You'll be writing functions to read data from a file, write data to a file, and append data to an existing file. Mastering these operations is crucial for building applications that interact with persistent data storage.

Problem Description

You are tasked with creating a Go program that provides a set of functions for interacting with files. The program should include the following functions:

  1. ReadFile(filePath string) (string, error): This function should read the entire contents of a file specified by filePath and return the contents as a string. If the file does not exist or there's an error during reading, it should return an empty string and an appropriate error.

  2. WriteFile(filePath string, data string) error: This function should write the given data to a file specified by filePath. If the file exists, it should be overwritten. If the file doesn't exist, it should be created. The function should return an error if there's a problem writing to the file.

  3. AppendFile(filePath string, data string) error: This function should append the given data to the end of a file specified by filePath. If the file doesn't exist, it should be created. The function should return an error if there's a problem appending to the file.

The program should handle potential errors gracefully and return meaningful error messages.

Examples

Example 1:

Input: filePath = "test.txt", data = "Hello, world!"
Output: No output (writes to file)
Explanation: The function `WriteFile` creates a file named "test.txt" and writes "Hello, world!" to it.

Example 2:

Input: filePath = "test.txt" (file exists with content "Initial content."), data = " Appended text."
Output: No output (appends to file)
Explanation: The function `AppendFile` appends " Appended text." to the existing content of "test.txt". The file will now contain "Initial content. Appended text."

Example 3:

Input: filePath = "nonexistent_file.txt"
Output: "", error: "file does not exist" (when calling ReadFile)
Explanation: The `ReadFile` function attempts to read a file that doesn't exist and returns an empty string and an error.

Constraints

  • filePath will be a string containing a valid file path.
  • data will be a string containing the data to be written or appended.
  • The maximum file size that can be read or written is 1MB (1024 * 1024 bytes). While you don't need to explicitly enforce this, consider it for potential performance implications.
  • Error handling is crucial. Return descriptive error messages.
  • The program should be efficient and avoid unnecessary memory allocations.

Notes

  • Use the os package for file operations.
  • Consider using defer os.Close(file) to ensure files are closed properly, even in case of errors.
  • Think about how to handle different error conditions (e.g., file not found, permission denied, disk full).
  • The WriteFile function should overwrite existing files.
  • The AppendFile function should append to existing files, creating them if they don't exist.
  • Focus on clear, concise, and well-documented code. Error handling is a key aspect of this challenge.
Loading editor...
go