java - 可以通过 afp 安装锁定用 java 打开的文件吗?

标签 java macos locking afp

我正在尝试通过 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(不支持操作)。

经过一些实验,我发现我可以在设置音量时锁定 使用 NFS。

有人找到了通过 SMB 或 AFP 安装锁定文件的方法吗?

最佳答案

您收到的异常说明了一切IOException(不支持操作)不同的文件系统具有不同的功能,锁定就是其中之一。维基百科 Comparison of file systems尽管它没有提到锁定,但确实清楚地表明了这一点。

当您通过 SMB 或 AFP 访问文件时,您实际上是在将它们用作文件系统,而它们是功能不是很丰富的文件系统。不幸的是,您不能假设存储文件的实际文件系统的所有功能都可以通过 SMB 或 AFP 获得。

SMB 协议(protocol)的目标是提供对网络上文件、打印机等的共享访问,因为网络上的设备是异构的,该协议(protocol)将其功能限制为最普遍支持的功能。

关于java - 可以通过 afp 安装锁定用 java 打开的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959273/

相关文章:

java - 在 Spring 计划任务使用的 Bean 上使用 DAO

如果字符串包含非法字符,则返回 Java 函数

c - 关于锁定 fread/fwrite 并从不同进程调用

linux - "Couldn' t lock/home/marc/sent?”在 Mutt 中

java - MailChimp 3.0 HTTP POST Json 示例

java - 如何迭代类类型的数组列表

ios - 如何暂停 NSOperationQueue 中的 NSOperation?

java - 没有这样的文件或目录 Eclipse Java Mac OSX

Apache2 无法启动 - Mac OS X - Passenger

mysql 在导入数据库转储时挂起