- PR -

ファイルロックについて

投稿者投稿内容
raccoon
ベテラン
会議室デビュー日: 2002/12/18
投稿数: 58
投稿日時: 2003-01-14 10:46
さくらばさん,ご指摘ありがとうございます。

引用:

さくらばさんの書き込み (2003-01-11 02:25) より:
ところで、FileChannel はファイルをマップさせるときに使うだけでなく、
ごくごく普通の入出力に使えますよ。



そうだったんですね。わたしが勘違いしていました。
わたしもその後の皆さんの書き込みを見て,「あれっ?」と思ってました。
# 以前,Mapped Fileの代替手段として調査していたので・・・。

誤った情報を書き込んでしまい,申し訳ありませんでした。
皆さんのフォローに感謝,です・・。
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-01-14 15:29
みーちくです。

さくらばさんのソースを元にテストいたしました。
ソースはそのまま使わせて頂きました。
朝からがんばって、ソースを解析しながらテストを続けているのですが。
どうしても最初のスペースがとれません。

(1)1行目に必ず空白文字(スペース)がはいってしまう。
  ByteBufferUtility.printByteBuffer(buffer);を指定して出力したのが
  下記↓になります。

コード:
Lock: sun.nio.ch.FileLockImpl[0:9223372036854775807 exclusive valid]
P





                                L                               C
 [6b, 5f, 39, 35, 35, 34, 09, 2f, 72, 61, 69, 64, 31, 2f, 64, 74, 70, 2f, 63,
  6f, 6e, 74, 65, 6e, 74, 2f, 67, 2f, 67, 36, 37, 2f, 67, 36, 37, 34, 35, 2f,
  67, 36, 37, 34, 35, 2d, 30, 30, 2d, 30, 09, 67, 36, 37, 34, 35, 2d, 30, 30,
  2d, 30, 09, 37, 39, 34, 34, 39, 35, 0d, 0a, 6b, 5f, 30, 31, 37, 37, 09, 2f,
  68, 6f, 6d, 65, 2f, 6b, 75, 72, 6f, 6b, 69, 2f, 67, 2f, 67, 31, 32, 2f, 67,
  31, 32, 33, 34, 2f, 67, 31, 32, 33, 34, 2d, 30, 30, 2d, 30, 09, 67, 31, 32,
  33, 34, 2d, 30, 30, 2d, 30, 09, 37, 39, 34, 34, 39, 35, 00, 00, 00, 00, 00,
  00, 00, 00]



みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-01-14 17:30
みーちくです。

いろいろテストしてみたのですが。
同じソースをWindows環境で動かした場合は正常に動作します。
Linux環境で動かした場合に、1行目に空白のスペースが入ってしまいます。

どなたか原因がわかる方いらっしゃいますか?

宜しくお願い致します。
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2003-01-16 00:19
こんにちは、さくらばです。

すいません、Linux では検証してませんでした。

引用:

みーちくさんの書き込み (2003-01-14 17:30) より:
いろいろテストしてみたのですが。
同じソースをWindows環境で動かした場合は正常に動作します。
Linux環境で動かした場合に、1行目に空白のスペースが入ってしまいます。

どなたか原因がわかる方いらっしゃいますか?



どうも Linux だと channel.truncate(0) をコールした後も
channel の position が変更されないようです。Windows だと
position は 0 になるので、てっきり他のプラットフォームで
もこうなるのかと思っていました。

したがって、Linux で正常に動作させるには

コード:
    channel.truncate(0);
    channel.position(0);
    channel.write(buffer);



のように、truncate した後に position を 0 にすればいいようです。
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-01-16 11:52
こんにちわ。みーちくです。

さくらばさん。返信ありがとうございます。
私もさくらばさんのページを参考に[Buffer → Channel → FileChannel]と勉強し、
がんばって考えて channel.position(0);に到達することができました。
昨日、こちらの掲示板が不調だったので、書き込めなかったのですが、
channel.position(0);にすることで、Linuxでも正常に動作いたしました。

ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)