作者:mobiledu2502870557 | 来源:互联网 | 2023-09-17 16:12
关于大文件上传成功判断,这里举两个适用案例:1、页面上传文件至服务器后,需要立即对文件进行处理,如解压、读取等操作;2、通过ftp上传大文件后,立即对大文件进行备份,解压,读取数据等等;3、..
关于大文件上传成功判断,这里举两个适用案例:
1、页面上传文件至服务器后,需要立即对文件进行处理,如解压、读取等操作;
2、通过ftp上传大文件后,立即对大文件进行备份,解压,读取数据等等;
3、....
这时,如果不判断文件上传成功,可能复制过去的只是文件的一部分,或者是解压不成功。
有人说通过Thread.sleep(10000),在操作文件前进行睡眠10s,这个并不是很好,睡的时间不够,可能文件还是只有一部分,睡得太久,会影响效率。
下面介绍一种判断方法:
/**
* 等待文件上传到服务器完全成功
* 文件在5s后大小不变,表示完全创建成功
* @param filePath 文件路径
* @return boolean
*/
private boolean fileIsCreateSuccess(String filePath) {
try {
File file;
file = new File(filePath);
long len1,len2;
len2 = file.length();
do {
len1 = len2;
Thread.sleep(5000);
file = new File(filePath);
len2 = file.length();
System.out.println("文件5s前后大小分别为:"+len1+","+len2);
} while (len1return true;
} catch (Exception e) {
logger.error("文件创建失败", e);
return false;
}
}
本例因为文件一般都比较大所以选择的是比较5s前后文件大小,当然你也可以选择1s。
当然如果用到了FileInfo类也可使用她的Refresh方法刷新文件大小,如:
len1=len2;
Thread.Sleep(1000);//等待1秒钟
fi.Refresh();//这个语句不能漏了
len2=fi.Length;