maya でも mayaLT でも使用できるので、fwriteAll~と併せて fgetline や fgetword から切り替えていきたいコマンドです。
昔から存在する fgetline や fgetword を使用するためには
1 2 3 4 5 6 7 8 9 10 11 | { $fileId =` fopen $exampleFileName "r" `; string $nextLine =`fgetline $fileId `; while ( size( $nextLine ) > 0 ) { print ( $nextLine ); $nextLine =`fgetline $fileId `; } fclose $fileId ; } |
こんな感じで while が入るため無限ループの危険が付きまといます。
freadAll~も fwriteAll~ と同様にコマンドと読み込むファイル名を指定するだけと、使用方法が簡素になりました。
まずは取り込むためのテキストファイルを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { 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 `; } |
そしてファイルの読み込み。
まずは freadAllText のほうから。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { 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" ); } |
なので、$allTextLf、$allTextCrlfを print すると、こんな風に履歴が出ます。

fwriteAlltext と fwriteAllLinesで追加している・されている改行コードによりリストっぽく表示されています。
ここから1つの文字列を改行コードで配列に分割する感じでしょうか。その時注意することは fwriteAllLinesでは必ず改行コードに"\r\n"
が付いてしまうという事。15行目の gmatch "*\r*" で true が出ています。
次に freadAllLines。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { 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 件のコメント:
コメントを投稿