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 件のコメント:
コメントを投稿