Last updated at 2023-07-07

How to Write the Content of String to a File in Swift

AI Status
Last Edit By
Last edited time
Jul 7, 2023 09:41 AM
Jul 4, 2023
When you need to store files or data on the disk, you write to a file in a basic use case. The file may be created by the user or by the application. The data may be generated by the user or by your application. In a more complex, deep-down use case, your program may store data during intensive operations, implement caching, or relieve memory pressure by storing the data to disk.
Regardless of the use case, Swift already provides APIs for writing files to disk. This is how.
With Network Spy you can monitor, inspect, and modify your network traffic during development. Perfect for debugging and more analysis. 🙌 Join the Waitlist Today! https://mozzlog.com/projects/network-spy


This tutorial requires no setup on your part if you already have a Swift compiler available on your machine. We will use the Foundation's API, which ships with the Swift toolchain.

Write to a File using Swift

To write to a file in Swift, you can use the write method in String The write method of String can be used to write content to a file synchronously. Here's an example:
import Foundation print("Start Write") let content = "My name is Mozzlog" do { try content.write(toFile: "file.txt", atomically: true, encoding: .utf8) print("End Write") } catch { print("Error: \\(error)") }
The above code will write the string "My name is Mozzlog" to a file named file.txt, overwriting its previous content, if any.
  1. Create a String content with "My name is Mozzlog".
  1. Write content to file.txt using the write method with .utf8 encoding.
  1. The atomically parameter indicates whether the data should be written atomically to avoid data corruption in the event of an interruption. In this case, we set it to true.

Write to a File using Swift Asynchronously

Writing to a file asynchronously helps you offload tasks from the current thread to another thread. You can use the current thread to do some other meaningful work that your program does.
In this asynchronous tutorial, you are not using the asynchronous API provided by the Foundation framework. Rather, you will send your writing logic to a global queue to do the writing in the background. In this case, we will use DispatchQueue.global(qos:.background).
Due to the nature of the dispatch queue API, you may need to provide a callback when the writing is done.
import Foundation func saveToFile(content: String, callback: @escaping () -> Void) { DispatchQueue.global(qos: .background).async { do { try content.write( toFile: "file.txt", atomically: true, encoding: .utf8) DispatchQueue.main.async { callback() } } catch { print("Error: \\(error)") } } } print("Start Write") saveToFile(content: "My name is Mozzlog") { print("Finish Write") } print("Continue Working")
The above code will produce output in the log like this:
Start Write Finish Write Continue Working
This asynchronous API allows you to write a file as a background task, and your program doesn’t need to wait for it to finish.
By dispatching the write operation to a background queue and handling the completion on the main queue, you ensure that the file writing is done asynchronously.


In Swift, you can easily write to a file synchronously or asynchronously using the Foundation framework's file system functionalities. This allows you to manage file operations efficiently and maintain a smooth user experience in your applications.
Swift already provides us with the API to write either synchronously or asynchronously. Each API has its own benefits and considerations. Asynchronous allows you to optimize your program's performance, while synchronous allows you to design your code from the top down.
Happy Writing Your File!

Discussion (0)

Related Posts