maya でも mayaLT でも使用できるので、fwriteAll~と併せて fgetline や fgetword から切り替えていきたいコマンドです。
昔から存在する fgetline や fgetword を使用するためには
{ $fileId =`fopen $exampleFileName "r"`; string $nextLine =`fgetline $fileId`; while( size( $nextLine ) > 0 ) { print( $nextLine ); $nextLine =`fgetline $fileId`; } fclose $fileId; }
こんな感じで while が入るため無限ループの危険が付きまといます。
freadAll~も fwriteAll~ と同様にコマンドと読み込むファイル名を指定するだけと、使用方法が簡素になりました。
まずは取り込むためのテキストファイルを作成。
{ string $file1 = "d:/lf.txt"; string $file2 = "d:/crlf.txt"; string $obj[] = `polyCube`; string $vtxs[]= `polyListComponentConversion -tv $obj[0]`; $vtxs = `ls -fl $vtxs`; // fwriteAllText string $oText; for($vtx in $vtxs) $oText+=($vtx+"\n"); int $result1 = `fwriteAllText $file1 $oText`; // fwriteAllLines int $result2 = `fwriteAllLines $file2 $vtxs`; }今回はそんな長文にならないよう polyCube の頂点を出力してみました。
そしてファイルの読み込み。
まずは freadAllText のほうから。
{ string $lf = "d:/lf.txt"; string $crlf = "d:/crlf.txt"; string $allTextLf =freadAllText($lf); string $allTextCrlf=freadAllText($crlf); print("\n-- allTextLf ----\n"); print($allTextLf); if(`gmatch $allTextLf "*\r*"`) print("true\n"); else print("false\n"); print("\n-- allTextCrlf ----\n"); print($allTextCrlf); if(`gmatch $allTextCrlf "*\r*"`) print("true\n"); else print("false\n"); }freadAllText はファイルの内容を文字列へ読み込みます。
なので、$allTextLf、$allTextCrlfを print すると、こんな風に履歴が出ます。
fwriteAlltext と fwriteAllLinesで追加している・されている改行コードによりリストっぽく表示されています。
ここから1つの文字列を改行コードで配列に分割する感じでしょうか。その時注意することは fwriteAllLinesでは必ず改行コードに"\r\n"
が付いてしまうという事。15行目の gmatch "*\r*" で true が出ています。
次に freadAllLines。
{ string $lf = "d:/lf.txt"; string $crlf = "d:/crlf.txt"; string $allLinesLf[] =freadAllLines($lf); string $allLinesCrlf[]=freadAllLines($crlf); print("\n-- allLinesLf ----\n"); print($allLinesLf); if(`gmatch $allLinesLf[0] "*\n*"` ||`gmatch $allLinesLf[0] "*\r*"`) print("true\n"); else print("false\n"); print("\n-- allLinesCrlf ----\n"); print($allLinesCrlf); if(`gmatch $allLinesCrlf[0] "*\n*"` ||`gmatch $allLinesCrlf[0] "*\r*"`) print("true\n"); else print("false\n"); }こちらはファイルのテキスト行を文字列の配列に読み込みます。履歴はこんな風に出力されます。
見た目には freadAllTextと同じようにい見えますが、このコマンドでファイルを読み込むと、なんと、改行コードが除去されているのです。
gmatch も両方 falseが出ています。
なかなか便利ですね。
これだと、freadAllTextの存在意義が分からなくなりますが、あるという事は何かに使えるんでしょうね・・・。
0 件のコメント:
コメントを投稿