如何检查并关闭excel文件是否已在java中打开

如何检查并关闭excel文件是否已在java中打开,java,io,Java,Io,可能重复: 我正在制作一个swing实用程序,在其中创建并使用ApachePOI提供的excel工作表。 如果文件在我试图访问它时已经打开,它会抛出一个异常,就像其他进程正在使用这个excel文件一样。所以我只想检查excel文件是否已经打开,如果是,则关闭它 你在谷歌上搜索过这个话题吗:下面是我想到的一些 我在这里复制关于stackoverflow的第一个问题的答案: File file = new File(fileName); FileChannel channel = new

可能重复:

我正在制作一个swing实用程序,在其中创建并使用ApachePOI提供的excel工作表。
如果文件在我试图访问它时已经打开,它会抛出一个异常,就像其他进程正在使用这个excel文件一样。所以我只想检查excel文件是否已经打开,如果是,则关闭它

你在谷歌上搜索过这个话题吗:下面是我想到的一些

我在这里复制关于stackoverflow的第一个问题的答案:

File file = new File(fileName);
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
// Get an exclusive lock on the whole file
FileLock lock = channel.lock();
try {
    lock = channel.tryLock();
    // Ok. You get the lock
} catch (OverlappingFileLockException e) {
    // File is open by someone else
} finally {
    lock.release();
}
希望这会有所帮助。

您是否尝试过以下方法:

File file = new File(pathToFile);
if (file.canRead()) {
  <do whatever you are doing with the file>
}
File File=新文件(pathToFile);
if(file.canRead()){
}

您想关闭其他程序还是您的程序?我想关闭excel文件如果另一个程序保持该文件打开,则您需要关闭该程序或指示该程序关闭该文件。你在追求哪一个?我认为,通过其他程序,它意味着操作系统。总的来说,我只是通过双击打开了目标excel,因此我在java中遇到了一个异常,即“进程无法访问文件,因为它正被另一个进程使用”PS my bad其进程不是程序:)不,这不是解决方案。这只会告诉您文件是否可以读取。在两种情况下都返回true 1。文件已打开2。文件已关闭。FileLock依赖于平台,不能保证正常工作(我有相当一部分无法正常工作)