我有生产代码,对于一个用户,这行代码不断抛出错误:
Desktop desktop = Desktop.getDesktop();
desktop.open(file);
日志文件将此显示为错误:
java.io.IOException: Failed to open C:\Users\flast\Desktop\spreadsheet.xls. Error message: The system cannot write to the specified device.
我无法重现此错误,因此无法提供SSCCE。但是,任何人都可以解释为什么Desktop::open()
会抛出这个错误?也就是说,为什么要写'#34;写"什么? Desktop::open()
应该只找到关联的程序并打开文件。没有什么可写的。
值得注意的是:我在代码中实际捕获此错误并尝试使用Desktop::browse()
:
Desktop desktop = Desktop.getDesktop();
try {
desktop.open(file);
} catch (IOException e) {
handleError(e);
desktop.browse(file.toURI());
}
但browse()
也会抛出错误:
Failed to open file:/C:/Users/flast/Desktop/spreadsheet.xls. Error message: Access is denied.
所以我很难过。