我有java桌面应用程序,我有文件上传和查看功能。 这是我打开文件的代码
public static boolean open(File file) {
OSDetector osdetector = new OSDetector();
try {
if (osdetector.isWindows()) {
Runtime.getRuntime().exec(new String[]{"rundll32", "url.dll,FileProtocolHandler",
file.getAbsolutePath()});
return true;
} else if (osdetector.isLinux() || osdetector.isMac()) {
Runtime.getRuntime().exec(new String[]{"/usr/bin/open",
file.getAbsolutePath()});
return true;
} else // Unknown OS, try with desktop
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().open(file);
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace(System.err);
return false;
}
}
这在MAC OS中完全有效,但是当我在Windows 7 PC上运行时,它将无法打开文件。 以下是错误消息;
Adobe Reader错误:“打开此文档时出错。此文件已被其他应用程序打开或正在使用”
Windows照片查看器错误消息:“Windows照片查看器无法打开此照片,因为正在使用其他程序编辑照片”
绘制错误消息:“访问时发生共享冲突.....”
请帮忙
谢谢
答案 0 :(得分:1)
Windows无法同时使用一个文件来处理两个程序的想法,可能是因为它的DOS单用户来源。确保在保存文件时,在调用open()
方法之前将其关闭。