Obj.C

obj.C:ファイル管理のためのファイル情報取得

ファイル管理に必要な情報をいくつか拾い出し、それをどうすれば取得できるか調べています。

まず、
NNSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;

NSArray *arrayWork = [fileManager contentsOfDirectoryAtPath:mcFilePathDir error:&error];
で取れる情報は指定したフォルダ(ディレクトリ)直下のファイルだけで、フォルダはその中に入っているものまでは一覧に含めてくれません。

  • ひとつの方法は、フォルダを必ず△△△mesaclipのような形式で書いてしまうのも一手で、それだけを開けて行くのも解決方法のひとつです。つまり、任意のフォルダ名は許さない仕様。
  • ファイル名も必ず△△△mesaclip.dataにするのはどうでしょうか?

次に、
NSFileManager *fileManager2 = [NSFileManager defaultManager];
NSArray *arrayWork2 = [fileManager2 subpathsAtPath:mcFilePathDir];
で情報は指定したフォルダ(ディレクトリ)直下のファイルをすべて取り込むことが可能です。

  • 問題は、.DS_Storeが読み込まれることです。これが出て来る箇所がフォルダに相当するように見えます。
  • 展開されたファイル一覧から作成したファイルパスでファイルが存在するかチェックしました。BOOL値はYESなので全部のファイルが存在することになります。
    このやり方でいいとしたとき、つまり、ファイルパスの作り方は正しいとしたとき、そのファイルが自分のアプリが取り扱うファイルかどうかは、このままでは決めかねます。それ故、ファイル名とフォルダ名も修飾するかどうか決めないといけません。
  • アプリのフォルダ、ファイルであることを確実に担保するひとつの方法は、ファイル管理テーブルをsave/restoreする手がありますが、どうなんでしょうね。もし、アプリ用ファイル管理テーブルをsave/restoreすれば、そのファイルを初期化/読み込み/展開してから処理を開始すれば、アプリのフォルダ内に紛れ込んだファイルやフォルダに触らないですみます。
  • ファイル名のつけかたも柔軟にできるし、対応するユーザに見えるファイル名を二重化すれば、特殊記号等や長さを気にしなくてすみます。フォルダも同じ考え方で対応できます。
  • BOOLの返り値でフォルダとファイルを識別可能とするサイトもあったのですが、うまく行きませんでした。

表面的なファイル管理はそれでいいとしても、次の問題は、

  • ユーザーが指定するファイル名のデフォルトをhtmlのtitleから取り出せるかどうか?
  • 取り出せたとしても、text fieldにはIBActionがないのでリターンキーなどでキックする方法があるか?
    ざっと探した限りではないらしいです。
  • もうひとつは、ファイル管理とは関係ないのですが、htmlをキックしたときにブラウザに飛ばないでアプリで吸収できるか?

まだまだ、基本的な疑問点の調査を継続してやっています。

IMG_3118