线程文件上传偶尔找不到文件,但是确定有文件。

使用线程做的文件上传,启动线程后上传文件线程的run方法跑完了,也上传成功了,再次上传就可能找不到要上传的文件,而且还是多文件上传会有其中某一个找不到。单个上传不容易出现这个错误。图片图片图片

3个回答

题主能不能截图。。。看不清。。也可能是我视力不好
我们先改一个地方试试吧,fis和fos的关闭都应该在for循环里面。while下方

哈哈,,确实很不清晰(感觉csdn移动端有bug,,上传的图片全是,缩略图)

文件的io操作,,try,catch,finally,,关流操作在try内执行,不好

传输过程出现异常,后面关闭的代码是无法执行

在finally中关闭。

vane11
Vane11 回复小鼠标丶: 暂不论这个是不是好习惯吧,毕竟这边以解决问题为主。catch file的Exception是输出了错误的message的,catch普通Exception是输出了6个字符,上面截图里没显示出来。而且我也还是认为,如果真的报错了,题主肯定知道的,题主肯定也捕捉过错误,因为没有报错才会拿出来问
大约 3 年之前 回复
Small_Mouse0
鼠小 回复Vane11: “虽然这里没报错(bug没表现出来)”这句话多余了
大约 3 年之前 回复
Small_Mouse0
鼠小 回复Vane11: 关流操作放在finally里,,是个好习惯,,虽然这里没报错(bug没表现出来),,题主的报错了,只不过题主catche后只打印了一句话,,,他没有输出错误信息,这也是个不好的习惯。
大约 3 年之前 回复
vane11
Vane11 如果是抛错了,题主应该知道是错误引起的,而且上面截图不像报错了
大约 3 年之前 回复
Small_Mouse0
鼠小 回复Vane11: 这回你错了(●'◡'●),如果while循环抛出异常,执行cache去了,是不是没关流,,,放在finally里不管咋执行,都能保证关流操作执行。
大约 3 年之前 回复
vane11
Vane11 不是因为出现异常而导致后面代码无法执行才没有让文件保存成功
大约 3 年之前 回复
vane11
Vane11 不是在fianlly中,就是在for循环内部,while下方。。。。。
大约 3 年之前 回复

看不清,但可以猜。。。。。。
这是多线程上传文件吧?楼主是不是一个线程一次上传一个文件?是否确保了多个线程之间抢一个文件的情况?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐