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)
    

カスタマイズ

特になし

まとめ

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

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

アイコン一括作成サービス紹介

アプリのアイコンを作るのは手間で面倒くさい。と、思いながらPhotoshopで一つ一つサイズを変えて作っていたのですが、 簡単につくれるサービスやっぱりありました。Macのスクリプトだったり、Webサービスだったりと揃っていましたので共有します。

Typealiasをどうやって活用するのか

Typealiasって言葉、なんだややこしく見て見ないふりをしていましたが、 先日別の記事を書いた際にTypealiasの記述がありましたので、あらためて確認してみようと思います。まずaliasですが、 Macでショートカットを作成した時に記載される「エイリアス」です。ショートカットのようなものですので、 Typeのショートカット的な感覚で調査進めてまいります。

UINavigationController

TabBarとUITableViewControllerを利用して一つのUIViewControllerだけをクリックすると右にスライドするUINavigationControlerを 利用したサンプルを記載します。というのも、AppDelegate内でUINavigationをself.windowのrootviewcontrollerにセットする 方法は多々あったのですが、AppDelegate内を利用しないでNavigationを実装する方法がなくハマっていましたのでを以下記載します
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!