Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > NSFileManagerでAPP保存領域のデータ操作

NSFileManagerでAPP保存領域のデータ操作

サンプル画像

作成・保存・移動・削除・置換・コピー・ディレクトリ作成等のファイルの操作全般を行うクラスです。

NSFileManagerのクラス階層


NSObject

NSFileManager


参考:Foundation Framework Reference NSFileManager Class Reference
参考:swiftでファイルの書き込み
参考:replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error: broken in iOS 6?

やってみた

作成(保存)・移動・削除・コピー・ディレクトリ作成


作成(保存)


let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var fileName = "hogeTest.txt"
let fileObject = "I am Swift-Salaryman! I am inside of hogeTest.txt!!!!"
fileObject.writeToFile(docDir+"/"+fileName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
  

Documentディレクトリに以下hogeTest.txtが保存されます。(ディレクトリへの移動はFinder -> 移動 -> フォルダ移動 にdocDirの保存場所を入れてください。)

サンプル画像

こんな感じです。(というかNSFileManager利用していませんね、、、、)


移動

上の作成処理の最後に移動させる処理を追加。


let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var fileName = "hogeTest.txt"
let fileObject = "I am Swift-Salaryman! I am inside of hogeTest.txt!!!!"
fileObject.writeToFile(docDir+"/"+fileName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
    
NSFileManager.defaultManager().moveItemAtPath(docDir+"/"+fileName, toPath: docDir+"/hogeTestTheSecond.txt", error: nil)

同じディレクトリ内部で移動させているのでリネーム動作になっています。moveItemAtPathはパスを記載していますが、moveItemAtURLとNSURLを利用しての移動も可能ですので臨機応変にご利用ください。

サンプル画像

名前が変わりました。(移動しました)


削除

同様に削除の行を最終行に追加しました


let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var fileName = "hogeTest.txt"
let fileObject = "I am Swift-Salaryman! I am inside of hogeTest.txt!!!!"
fileObject.writeToFile(docDir+"/"+fileName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
    
NNSFileManager.defaultManager().removeItemAtPath(docDir+"/"+fileName, error: nil)

さて、作成されて削除される一連の動作をgifアニメーションで見てみます

サンプル画像

作成されてすぐ削除されるhogeTest.txt。少し切ない気持ちにもなります。


コピー

別名(hogeTestTheSecond.txt)でコピーして同じディレクトリに保存してみます。



let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var fileName = "hogeTest.txt"
let fileObject = "I am Swift-Salaryman! I am inside of hogeTest.txt!!!!"
fileObject.writeToFile(docDir+"/"+fileName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
    
NSFileManager.defaultManager().copyItemAtPath(docDir+"/"+fileName, toPath: docDir+"/hogetTestTheSecond.txt", error: nil);


サンプル画像

こんな感じです。


ディレクトリ作成


let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String        
NSFileManager.defaultManager().createDirectoryAtPath(docDir+"/hogeDirectory", withIntermediateDirectories: false, attributes: nil, error: nil)

サンプル画像

ディレクトリもこんな簡単に作成できました


上書き

replaceの関数もあるのですが引数が多いので私は以下の方法を利用しています。(移動やWriteでは上書きできずにエラーが発生する)



let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var fileName = "hogeTest.txt"
//削除して
NNSFileManager.defaultManager().removeItemAtPath(docDir+"/"+fileName, error: nil)
//作成
let fileObject = "I am Swift-Salaryman! I am inside of hogeTest.txt!!!!"
fileObject.writeToFile(docDir+"/"+fileName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
    

カスタマイズ

特になし

まとめ

ファイルやディレクトリ作成はなんとなく面倒くさいイメージがありましたが、この記事で少し自分の中で壁が低くなった気がします。 よろしければご利用くださいませ。

↓こんな記事もありますよ!

Pre特殊文字難民

記事を書いている時によくつまずくことがあります。preでコードを表示する際に、 カッコを使うと文章が消えてしまったり、ドルマークの変数が表示できなかったり。その度に検索して探しているのでサイトの中に入れてしまいます。 以前のバックスラッシュもそうですが、こういった特殊文字難民対策のページにしておきます。

UIFontのフォント一覧をWebViewで表示させてそれをキャプチャ保存する

文字フォントがわかっても実際の文字がわかりませんので、 WebViewに出力させて、その結果を端末のPhotoアルバムに保存させる処理をつくってみました

Swiftがオープンソース化!!!(WWDC2015)

2:22:00からSwiftの話です!オープンソースを発表したタイミングは2:23:28のあたり。拍手喝采です。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!