2012-07-18 187 views
0

可能重复:
Java: Check if file is already open如何检查并关闭如果Excel文件是在java中已经打开

我想提出一个摆动工具在我创建并使用一个excel表由Apache poi。 如果文件已经打开,而我试图访问它,它会抛出一个异常像其他进程正在使用这个Excel文件。所以我想要的是检查,如果该Excel文件已被打开,如果是的话,关闭它。

+0

你想关闭* *其他程序或*你*的程序? – aioobe 2012-07-18 07:52:03

+0

我想关闭excel文件 – wwwcrawl 2012-07-18 07:53:35

+1

如果另一个程序使文件保持打开状态,那么您需要关闭该程序或指示程序关闭该文件。你以后哪两个人? – aioobe 2012-07-18 07:56:34

回答

1

你做这个话题的一些谷歌搜索:下面是一些我想出了

我从第一复印答案问题在这里的计算器:

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(); 
} 

希望这会有帮助。

+0

FileLock是依赖于平台&不保证工作(我已经有我的公平份额不工作) – MadProgrammer 2012-07-18 09:02:18

1

你有没有尝试过这样的:

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

不,这不是解决方案。这只会告诉你文件是否可读。它在两种情况下均返回true。1.文件已打开 2.文件已关闭。 – wwwcrawl 2012-07-18 08:06:39

相关问题