FILE* fp = fopen([self.someStringPaht fileSystemRepresentation], "w");
stringはfopenには指定できない。 const char*型のパス文字列に変換してから渡す
なのでfileSystemRepresentation
を使う。
-fileSystemRepresentation
は
動作中のOSに適切なファイルパス文字列をC文字列として戻してくれる。
iOSやOSXで扱うC文字列は, UTF-8でエンコードされたunicode
標準Cライブラリ
fopen
モード | ファイルが存在する場合 | ファイルが存在しない場合 | 用途 | 読み出し初期位置 | 書き出し初期位置 |
---|---|---|---|---|---|
r | そのまま利用する | fopenは失敗する | 読み出しのみ | 先頭 | x |
r+ | そのまま利用する | fopenは失敗する | 読み書き | 先頭 | 先頭 |
w | ファイルの大きさを0に戻してから利用する | 新たに作成する | 書き出しのみ | x | 先頭 |
w+ | ファイルの大きさを0に戻してから利用する | 新たに作成する | 読み書き | 先頭 | 先頭 |
a | そのまま利用する | 新たに作成する | 書き出しのみ | x | 先頭 |
a+ | そのまま利用する | 新たに作成する | 読み書き | 先頭 | 先頭 |
削除
標準Cライブラリ
int remove(const char *path)
成功: 0、失敗: -1
path
にはファイルパス文字列
if (remove([yourFilePath fileSystemRepresentation])) {
// removeでエラーが発生している。ログを出してNOで戻る。
NSLog(@"旧バージョンのファイルの削除に失敗しました。error = %d", errno);
return NO;
}
NSFileManager
その他
size_t
http://manabu.quu.cc/up/3/e31555.htm
C言語では、長さ、大きさ、サイズを表現する型として、 size_t の名前の型が使われます。
sizeof演算子や、strlen関数など、byte数や長さを表現するところで使われる型です。
この型は、
byte列で保存したファイルの中身を見る方法
hexdump
hexdump /Users/moretajoo/Library/Application\ Support/iPhone\ Simulator/7.1/Applications/xxxx-xxxx-xxxx-xx/Library/Yourbytefile
0000000 01 00 00 00
0000004
magic number
確認
hexdump -C -n16
-C : 値に対応するASCII文字コードを表示させる指定
ex)
PNGの先頭8バイト
89 50 4e 47 0d 0a 1a 0a
89 : ネットワーク通信などでファイルが壊れていないかを確認するための値 50 4e 47 : P N G 0d 0a 1a 0a : 誤ってテキストエディタで開かれた時の対策
16進表記
10進表記と16進表記が混在するときには、16進表記側に0xという接頭辞をつけることで区別する。
10 : 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 16 : 1,2,3,4,5,6,7,8,9, A, B, C, D, E, F,10,11
10 10進表記の 10
0x10 16進表記の10, 10進表記では16
endianness(エンディアン) - ビッグエンディアン/リトルエディアン
エンディアンネス 、バイト順、バイトオーダ(byte order)ともいる