我正在创建一个zip文件供浏览器下载,如果存在一个同名的旧文件,则必须删除它以使数据不旧。但这在Windows 10中不会发生,jvm仍然保留旧文件。如果我删除了它,则会得到以前的zip文件。
File.delete,apache commons强制删除或java.nio给出异常
UI操作脚本调用:
<mx:Script><![CDATA[
public function handleResult(event:Object):void
{
var url:String = event.result as String;
ShellModel.instance.download(url);
NavUtils.closeWizard();
}
]]></mx:Script>
public function download(url:String):void
{
if( ExternalInterface.available && (StringUtilities.endsWith(url, "csv") || StringUtilities.endsWith(url, "zip")))
{
ExternalInterface.call( "downloadFileFromAS", url);
}
else
{
//
}
}
index.html:
function downloadFileFromAS( _fileURL )
{
window.location.href=_fileURL;
//??? no closing } bracket
java代码:
File exportZip = new File(filepath, filename+ ".zip");
if (exportZip.exists())
{
cleanImportDirectory(exportZip.getAbsolutePath()); // exception
call ///????
}
创建zip文件:
将zipurl返回到浏览器;
public void cleanImportDirectory(String zipFilePath)
{
try {
java.nio.file.Files.deleteIfExists(Paths.get(zipFilePath)); // exception occurs
}
}
catch (IOException e)
{ log.error("Could not delete imported files at : " + zipFilePath, e); }
}
}
java.nio.file.FileSystemException::该进程无法访问文件,因为 它正在被另一个进程使用。上次jvm仍然保留旧文件时发生了什么。上一次锁定时发生了什么
在linux上,我没有出现任何文件删除错误,每次都在zip文件中连续获取新数据