java.nio
文件系统API存在一个特殊问题。我的应用程序在Windows 8,Java 1.8版上运行。我为我的应用程序方案附加了备用数据流到我的文件。
以下是代码:
log.info("Path for which file id will be retrieved: " + fullPath);
UserDefinedFileAttributeView fileAttributeView = Files.getFileAttributeView(fullPath, UserDefinedFileAttributeView.class); //line 2
List<String> userAttributes = fileAttributeView.list();
if (userAttributes.contains("objectid")) {
byte[] b = (byte[]) Files.getAttribute(fullPath, "user:objectid"); //line 5
String objectId = new String(b, "UTF-8");
log.info("File id retrieved successfully: " + objectId); //line 7
return objectId;
}
log.info("User attributes does not contain OBJECTID ,null file id will be returned."); //line 10
return null;
上面的代码是获取用户定义属性的文件属性视图。
我的自定义属性称为objectid
。对于我的一位用户,既未记录(第7行)的日志,也未记录第10行的日志。而应用程序刚刚被阻止。我认为它在第2行和第3行之间被阻塞,其中进行了两次文件API调用。因为在我的场景中,代码执行不应该到达第5行。
问题:是否存在Files.getFileAttributeView()
或UserDefineFileAttributeView.list()
来电被阻止的情况?它可以特定于任何文件系统或我可能遗失的任何其他东西吗?我在上面的代码中有适当的异常处理。
由于它是一个生产系统,我无法调试,而且线程转储也没有显示任何内容。这只发生在一个使这个案例变得有趣的用户身上。