m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

swiftの学習(ファイル読み書き)

ファイルの読み書き

いくつか方法はあると思うけど簡単なものから書く
全然知らんのでシンプルなものから理解しておかないと…

ファイルの書き込み

簡単なもののファイル書き込み

サンプル

//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSSearchPathForDirectoriesInDomains(
    .DocumentDirectory,
    .UserDomainMask, true)

let _path = paths1[0].stringByAppendingPathComponent("text1.txt")

println(_path)


// 書き込み
var data:NSString = ""
data = data + "hoge1" + "\n"
data = data + "hoge2" + "\n"
data = data + "hoge3" + "\n"

let success = data.writeToFile(_path, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
if success {
    println("保存に成功")
}

結果

$ cat /Users/matsumotoshigeharu/Documents/text1.txt
hoge1
hoge2
hoge3
$

ファイル読み込み

さっき作ったファイルを読み込み

サンプル

//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSSearchPathForDirectoriesInDomains(
    .DocumentDirectory,
    .UserDomainMask, true)

let _path = paths1[0].stringByAppendingPathComponent("text1.txt")

println(_path)

// 読み込み
var data2 = ""
data2 = NSString(contentsOfFile: _path, encoding: NSUTF8StringEncoding, error: nil)!
println(data2)

結果

/Users/matsumotoshigeharu/Documents/text1.txt
hoge1
hoge2
hoge3



ここから下はディレクトリの取り方です

ディレクトリの取得

documentsの場合
//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSSearchPathForDirectoriesInDomains(
    .DocumentDirectory,
    .UserDomainMask, true)

let _path = paths1[0].stringByAppendingPathComponent("text1.txt")

println(_path)

/Users/matsumotoshigeharu/Documents/text1.txt

キャッシュの場合
//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSSearchPathForDirectoriesInDomains(
    .CachesDirectory,
    .UserDomainMask, true)

let _path = paths1[0].stringByAppendingPathComponent("text1.txt")

println(_path)

/Users/matsumotoshigeharu/Library/Caches/text1.txt

ホーム?
//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSHomeDirectory()

let _path = paths1.stringByAppendingPathComponent("text1.txt")

println(_path)

/Users/matsumotoshigeharu/text1.txt

テンポラリ
//
//  main.swift
//  swift_sample02
//

import Foundation

let paths1 = NSTemporaryDirectory()

let _path = paths1.stringByAppendingPathComponent("text1.txt")

println(_path)

/var/folders/wv/xj94y2k92hv_7y7p_mgh67mh0000gn/T/text1.txt

所感

sdkが一個前のバージョンらしい…
10.9とかで一部のメソッドとかは10.10で動くとかなんとかで動かなかった(´・ω・`)
とりあえずは現在動く機能だけでなんとかするしかない

これだけ調べるのに2時間もかかったような気が…