1

OSX で Java 6 経由でマウント ポイントを越えてファイル ロックを取得しようとしています。

    private void tryLockThroughShare() {
        String path = "/Volumes/Groups/mcm/javaTestInShare.txt";

        try {
            RandomAccessFile raf = new RandomAccessFile(path, "rw");
            FileLock flock = raf.getChannel().tryLock();
            System.out.printf("File %s is %s\n", path, (flock != null) ?
("locked") : ("not locked"));
            raf.write("yoo hoo!".getBytes());
            raf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

AFP または SMB を使用してボリュームをマウントすると、マウント先にファイルを書き込むことはできますが、ファイルをロックできず、代わりに IOException (Operation not supported) を受け取ります。

いくつかの実験の後、ボリュームが NFS を使用してセットアップされたときにロックできることがわかりました。

SMB または AFP マウントでファイルをロックする方法を見つけた人はいますか?

4

1 に答える 1

1

あなたが得ている例外はそれをすべて言いますIOException (Operation not supported)ファイル システムが異なれば機能も異なり、ロックもその 1 つです。ファイルシステムのウィキペディアの比較では、ロックについては言及されていませんが、この点は本当に明確です。

SMB や AFP 経由でファイルにアクセスする場合、それらをファイル システムとして効果的に使用していることになりますが、それらはあまり機能が豊富ではないファイル システムです。残念ながら、ファイルが保存されている実際のファイル システムのすべての機能が SMB または AFP 経由で利用できるとは限りません。

SMB プロトコルの目的は、ネットワーク上のファイル、プリンターなどへの共有アクセスを提供することです。ネットワーク上のデバイスは異種であるため、プロトコルはその機能を最も普遍的にサポートされている機能に制限します。

于 2010-06-02T16:17:34.490 に答える