判断大文件创建成功问题(如ftp上传后,判断上传成功)

关于大文件上传成功判断,这里举两个适用案例:

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 (len1<len2);
return true;
} catch (Exception e) {
logger.error("文件创建失败", e);
return false;
}
}


本例因为文件一般都比较大所以选择的是比较5s前后文件大小,当然你也可以选择1s。


当然如果用到了FileInfo类也可使用她的Refresh方法刷新文件大小,如:

len1=len2;
Thread.Sleep(1000);//等待1秒钟
fi.Refresh();//这个语句不能漏了
len2=fi.Length;

猜你喜欢

转载自blog.csdn.net/w20228396/article/details/78646336