【Swift/String】write(to:atomically:encoding:)メソッドでファイルに文字列を書き込む方法!

この記事からわかること
- Swiftでファイルの書き込み操作を行う方法
- StringProtocolとは?
- writeメソッドの使用方法
- write(to:atomically:encoding:)の使い方
- write(toFile:atomically:encoding:)の使い方
index
[open]
\ アプリをリリースしました /
Swiftでファイルへの書き込み操作を行うwriteメソッドについてまとめていきたいと思います。
使用例
writeメソッドとは?
上記のコードで使用しているwriteメソッドはStringProtocol
が保持しているメソッドです。StringProtocol
とはString
とSubstring
のみが準拠しているプロトコルで文字列を表現するためのプロトコルとして定義されています。そのメソッドの1つにファイルに文字を書き込むためのwrite
メソッドが用意されています。
公式リファレンス:StringProtocol.write(to:atomically:encoding:)
String構造体にも同名のwrite
メソッドが定義されていますがこちらは文字列に指定した文字列を追加するメソッドです。
公式リファレンス:String.write(_ other: String)
Swiftではwrite
と名の付くメソッドが様々な構造体やクラス、プロトコル(NSStringやOutputStreamなど)で定義されているのでややこしくなりがちですが使用用途や引数、使い方が異なるので困りますね。
おすすめ記事:【Swift】NSStringとは?String型との違いや使用方法
StringProtocol.write(to:atomically:encoding:)
StringProtocol.write(to:atomically:encoding:)
メソッドは指定したURLにあるファイルへ文字列の書き込み処理を行うメソッドです。なので「書き込む文字列」と「書き込み対象のファイルURL」が必要になります。
書き込む文字列
書き込む文字列は呼び出したStringオブジェクトです。
to:書き込み対象のファイルURL
1つ目の引数to
には書き込み対象のファイルはURL型で指定する必要があります。ファイルURLの構築方法は様々ですがよくあるのがFileManager
クラスを用いる方法です。
atomically
引数atomically
はファイルへの書き込み方法を指定できます。true
を指定した場合は一時的に対象ファイルの予備ファイルを生成してから、対象ファイルに書き込み処理を実行します。書き込み中にクラッシュした場合でも予備ファイルのおかげで中身のデータが消失することを防ぐことができます。false
の場合は直接対象ファイルへ書き込み処理を実行します。
encoding
引数encoding
は文字エンコード(文字コード)を指定します。そもそもコンピューターで文字を扱うにはエンコーディング(一定の規則に従った番号を割り当て)された形式である必要があります。この形式は複数存在するのでwrite
メソッドでも明示的にそのエンコーディング形式を指定する必要があります。
値はString.Encoding
構造体に定義されている値から指定します。
throw句
write
メソッドには例外を発生させるthrows
句が記述されているのでtry
を使用する必要があります。
StringProtocol.write(toFile:atomically:encoding:)
またStringProtocol
には引数違いで同名のwrite(toFile:atomically:encoding:)
メソッドも用意されています。先ほどは引数に「書き込み対象のファイルURL」を渡していましたが、こちらは「書き込み対象のファイルURL文字列」を渡します。
その他の引数や使用方法は同じですがファイルURLのデータ型が異なる点に注意してください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。