java – 确定一个文件是否是一个连接(在Windows中)?
我一直在寻找一个方法来确定一个文件是否是一个连接点,并没有找到任何令人满意的答案.
我尝试的第一件事是: Files.isSymbolicLink(aPath) 它只检测符号链接,而不是在Windows中称为连接的文件. 还尝试了这里提出的解决方案(使用JNA库): 我发现确定哪些文件是连接点的唯一方法是在Windows命令提示符下运行以下命令: DIR /S /A:L 在我的电脑上,它返回66个文件夹,文件Files.isSymbolicLink(aPath)只返回2. 有没有办法使用标准的java库,或替代JNA? 解决方法
如果您可以在JNA中编写本地代码,则可以直接调用Win32 API GetFileAttributes()函数,并检查FILE_ATTRIBUTE_REPARSE_POINT标志(连接是否实现为重分析点).
更新:为了区分不同类型的重分析点,您必须对实际重分析点的ReparseTag进行检索.对于连接点,它将被设置为IO_REPARSE_TAG_MOUNT_POINT(0xA0000003). 有两种方式来检索ReparseTag: >使用 NTFS Hard Links,Directory Junctions,and Windows Shortcuts (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |