File I/O

Crystal File Writing

Writing Files

Crystal file writing uses File.write with buffered streams.

Introduction to Crystal File Writing

File writing in Crystal is a straightforward process that enables you to store data persistently by writing it to files. In Crystal, the File.write method is commonly used for this purpose, allowing you to write data to a file efficiently using buffered streams. This ensures that data is written in chunks, optimizing the performance of file operations.

Basic File Writing with File.write

The File.write method in Crystal provides a simple way to write strings or binary data to a file. Here is how you can use it for basic file writing:

In this example, a file named example.txt is created (or overwritten if it already exists) with the content "Hello, Crystal!".

Writing with Buffered Streams

Buffered streams can significantly enhance the performance of file writing operations. By default, File.write uses buffered I/O, making it efficient for writing large amounts of data. You can also manually handle buffered streams using the File.open method with a block.

In the above code, File.open is used to open buffered.txt in write mode. The block ensures that the file is properly closed after the operations are complete, and the file.puts method is used to write lines of text with buffered I/O.

Appending to a File

To append data to an existing file without overwriting its contents, you can open the file in append mode:

This example opens example.txt in append mode ("a") and adds a new line of text to the end of the file. The previous contents of the file remain unchanged.

Handling File Writing Errors

Like any file operation, writing files can encounter errors, such as permission issues or disk space limitations. It's a good practice to handle these potential errors using exception handling:

In this snippet, an attempt is made to write to protected.txt. If an error occurs, such as a permission error, it is caught and handled gracefully, with an error message printed to the console.

Conclusion

Crystal's file writing capabilities are powerful and easy to use, thanks to the File.write method and buffered streams. Whether you're writing simple strings or handling large data streams, Crystal provides the tools needed for efficient file operations.