◆PROCESSING 逆引きリファレンス
カテゴリー:ファイル操作
スケッチ関連のパスを取得するには
【解説】
PROCESSINGではプログラムソース(スケッチファイル)格納フォルダの直下にある data フォルダに、リソースファイルを格納する事になっています。
リソースファイル以外にも、プログラムで扱いたいファイルは、スケッチフォルダや、その配下に作成する任意のフォルダに格納すると便利です。
それではプログラムから、これらのフォルダの場所を知るにはどうしたら良いでしょうか?。
公式リファレンスには掲載されていませんが、PROCESSINGにはこれらのフォルダパスを取得する便利な命令があります。
- sketchPath : スケッチフォルダ(またはその配下)へのパスを取得
- savePath : 同上。ただしフォルダを自動作成する
- desktopPath : Windowsの場合、デスクトップへのパスを取得
- dataPath : dataフォルダ(またはその配下)へのパスを取得
【構文】
●スケッチパスを得る
String path = sketchPath( String where ) ;
String path = sketchPath( ) ;
●セーブパスを作成して得る
String path = savePath( String where ) ;
●デスクトップパスを得る
String path = desktopPath( String where ) ;
●dataフォルダパスを得る
String path = dataPath( String where ) ;
path : 取得したパス
where : 指定フォルダ配下のパス
【注意】
Windowsの場合、スケッチを作成してから1度も保存していない状態でこれらの命令を実行すると、 desktopPath( ) 以外の命令は Windowsの非常に奥まった場所を戻してきます。
例:C:¥Users¥ユーザ名¥AppData¥Local¥Temp¥untitled数値の羅列sketches¥sketch_170325b
一度でも保存を実行した後であれば、期待したパス(スケッチ格納フォルダ配下)を戻してくれます。
例:スケッチブックの場所に C:¥processing-3.3¥src が指定してある場合
C:¥processing-3.3¥src¥sketch_170325b
savePath()はsketchPath()と似た動作をしますが、与えられた文字列(where)をスケッチ格納フォルダ配下のパスと見なし、フォルダが存在しない場合は自動作成する点が異なります。
例えばC:¥processing-3.3¥src¥sketch_170325b フォルダにスケッチファイルが格納されている場合、savePath ( “where¥¥hoge.txt” ) ; とすると
C:¥processing-3.3¥src¥sketch_170325b¥where¥hoge.txt が戻されると共に、C:¥processing-3.3¥src¥sketch_170325b 配下に where というフォルダが自動作成されます。
hoge.txt ファイルは作成されません。
各命令の関係を以下に示します。
dataフォルダを得たい場合は、dataPath( “” ) ; のように、dataPath()命令の引数に空文字を与えます。
【関連記事】
サンプルプログラム
いろいろなパスを取得する例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
void setup(){ size(100,100); noLoop(); } void draw(){ String path[] = new String[8]; //いろいろなパスを取得 path[0] = sketchPath(); path[1] = sketchPath( "where" ); path[2] = savePath( "" ); path[3] = savePath( "where" ); path[4] = desktopPath( "" ); path[5] = desktopPath( "where" ); path[6] = dataPath( "" ); path[7] = dataPath( "where" ); //結果表示 println( "sketchPath ( )=" + path[0] ); println( "sketchPath (where)=" + path[1] ); println( "savePath ( )=" + path[2] ); println( "savePath (where)=" + path[3] ); println( "desktopPath( )=" + path[4] ); println( "desktopPath(where)=" + path[5] ); println( "dataPath ( )=" + path[6] ); println( "dataPath (where)=" + path[7] ); } |
PROCESSING関連のいろいろなパスを取得してみました。
なお下記はWindows10での動作結果で、以下のような環境が前提です。みなさんの環境に応じて、適時読み替えてください。
スケッチブックの場所:C:¥processing-3.3¥src
Windowsのユーザ名 :MSLABO
スケッチ名 :sketch_170325a
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。