Home > XModules >

必要なシステム

  • OS X 10.9 以降
    • macOS 10.14.6 で開発およびテストをしています。

ダウンロード

Version 1.8.4 -- 2020-04-17

古いバージョン

依存モジュール

XFile

XFile はファイル操作(移動/削除、属性の取得などなど)に統一的なオブジェクト指向インターフェースを与えるAppleScript モジュールです。

AppleScript でのファイル操作はスクリプティング機能追加、Finder、System Evetns、シェルコマンド、Cocoa を駆使して行えますが、機能がいろんなところに分散していて非常に煩雑です。XFile はこれらを隠蔽して、よく整理されたインターフェースのファイルオブジェクトを導入します。

use XFile : script "XFile"
use scripting additions

(* Make a New Instance *)
set a_xfile to XFile's make_with("/Users")
set home_folder to XFile's make_with(path to home folder)

(* Obtain File Infomation *)
log a_xfile's type_identifier() -- "public.folder"
log a_xfile's is_folder() -- true
log a_xfile's is_package() -- false
log a_xfile's item_name() -- "Users"

(* Obtain Parent and Child *)
log home_folder's parent_folder()'s posix_path()
-- "/Users"
log home_folder's child("Documents")'s posix_path()
-- "/Users/yourhome/Documents"
log home_folder's child("Library/Scripts")'s posix_path()
-- "/Users/yourhome/Library/Scripts"
log home_folder's unique_child("Documents")'s posix_path()
--"/Users/yourhome/Documents 2"

(* Read and Write *)
set test_file to home_folder's child("testfile")
test_file's write_as_utf8("new data")
log test_file's read_as_utf8() -- "new data"

(* File Manipulations *)
log test_file's item_exists() --true

set test_file2 to test_file's copy_to(home_folder's child("testfile2"))
log test_file2's posix_path() -- "/Users/yourhome/testfile2"

test_file2's move_to(home_folder's child("Documents"))
log test_file2's posix_path() -- "/Users/yourhome/Documents/testfile2"

test_file2's into_trash()
log test_file2's posix_path() -- "/Users/yourhome/.Trash/testfile2"
test_file's into_trash()

(* Working with Shell Commands *)
log test_file's perform_shell("cat %s") -- "new data"

更新履歴

  • 1.8.4 -- 2020-04-17
    • is_executable() を追加。
  • 1.8.3 -- 2020-03-18
    • move_with_replacing でファイルを移動した後、XFile のインスタンスが移動先のファイルを参照しない不具合を修正。
  • 1.8.2 -- 2020-02-26
    • list_children メソッドで list folder コマンドではなく NSFileManager を使うようにした。
  • 1.8.1 -- 2020-02-05
    • copy_with_replacing を追加。
    • copy_to を NSFileManager を使って実装し直した。
    • copy_to はコピー先を置き換えません。
    • is_folder() は disk に対しても true を返すようにした。
    • move_with_replacing でエラーが起きる不具合を修正。
  • 1.8 -- 2020-02-04
    • resolve_alias を NSURL を使って実装し直した。
    • remove, move_to, move_with_replacing, into_trash を NSFileManagr を使って実装し直した。
    • is_package() の不具合を修正。
    • PathInfo 1.3.1 以上が必要です。
  • 1.7.2 -- 2020-02-03
    • type_identifier() を追加。
    • is_folder, is_alias, is_symlink, is_package を NSWorkspace から UTI を取得して判定する実装に変更。
    • into_trash を改良
      • macOS X 10.14 で alias がファイルの移動を追随しなくなった仕様に対応。
  • 1.7.1 -- 2020-01-28
    • HelpBook.osax の代わりに OpenHelpBook.scptd を使うようにした。
    • move_to を改良
      • macOS 10.14 で alias がファイルの名称変更や移動を追随しなくなった問題に対応。
  • 1.7 -- 2017-04-14
    • OS X 10.9 で導入された AppleScript Libraries として使えるようにした。
    • ModuleLoader.osax への依存性を無くした。
    • OS X 10.9 以降が必要になった。
    • ヘルプの更新。
  • 1.6 -- 2015-09-04
    • move_with_replacing を追加。
    • voluem_name を追加。
  • 1.5 -- 2012-06-01
    • info_with_size を追加。
    • perform_shell を追加。
    • shell_test を追加。
    • is_symlink を追加。
    • info() で得られるファイル情報にはサイズは含まれなくなった。
    • resolve_alias でシンボリックリンクを扱えるようにした。
    • copy_to, copy_with_opts の実行速度を改善。
    • make_with_pathinfo, change_path_extension のヘルプの間違いを修正。
  • 1.4 -- 2012-05-26
    • normalized_posix_path を追加。
    • item_exists_without_update を追加。
    • each を追加。
  • 1.3.3 -- 2011-02-10
    • resolve_alias が動作しない不具合を修正。
    • is_folder を修正。info for の結果を使用するようにした。
  • 1.3.2 -- 2010-09-09
    • 拡張子がないファイル名に対して unique_child を実行すると、正常に動作しない不具合を修正。
  • 1.3.1 -- 2010-06-16
    • HFS パスから XFile のインスタンスを作った場合、unique_child が、正常に動作しない不具合を修正。
    • 拡張子がないファイル名に対して unique_child を実行すると、正常に動作しない不具合を修正。
  • 1.3 -- 2010-03-25
    • モジュールのロードに ModuleLoader 2.1.1 以降が必須になった。
    • PathAnalyzer の代わりに、PathInfo を使うようにした。
    • ShowHelpBook への依存性を無くした。
    • make_with で POSIX パスを受け付けるようにした。
    • make_with_pathinfo を追加。
    • make_with_record を廃止。
    • folder_name を廃止。
    • child, make_folder, make_path には HFS パスではなく POSIX パスを渡す。
    • copy_with_opts を追加
    • copy_to および copy_with_opts のコピー先として相対パスをうけつける。
    • as_furl を追加。
    • make_path の引数でオプションを指定できるようにした。
  • 1.2.2 -- 2009-11-09
    • remove() が自分自身を返り値とします。
    • remove() したあとも、インスタンスはファイル参照として有効です。
    • copy_to で日付などのファイル属性を保存するようにした(cp コマンドに -p オプションをつけるようにした。)。
  • 1.2.1 -- 2009-03-09
    • 日本語マニュアルをヘルプビューアで表示できない不具合を修正。
  • 1.2 -- 2009-02-18
    • unique_child() が Mac OS X 10.5 で正しく動作しない不具合を修正
    • UniqueNamer への依存性を無くした。
  • 1.1.2 -- 2009-01-29
    • item_exists() が実行された時、内部で使用しているエイリアス形式の参照を再構築するようにした。
  • 1.1.1 -- 2008-11-03
    • ファイル参照形式として、alias が与えられたときも、item_exists() はファイルが実際に存在するかどうか調べるようにした。
    • PathAnalyzer 1.7.1 により、Mac OS X 10.5 との互換性を改善。
  • 1.1 -- 2008-03-20
    • move_to メソッドを mv コマンドを使ったものに変更
    • move_to メソッドで boolean を返すようにした。
    • マニュアルの間違いをいくつか修正
  • 1.0 -- 2007.08.15
    • 初公開