请问:
private class UploadPartThread implements Runnable {
我想问,用java上传文件的时候,java进程会占有这个文件。所以,在我的代码里面,文件一旦上传,就不允许删除,要等到进程结束。
private File uploadFile;
private String bucket;
private String object;
private long start;
private long size;
private List<PartETag> eTags;
private int partId;
private OSSClient client;
private String uploadId;
UploadPartThread(OSSClient client, String bucket, String object,
File uploadFile, String uploadId, int partId, long start,
long partSize, List<PartETag> eTags) {
this.uploadFile = uploadFile;
this.bucket = bucket;
this.object = object;
this.start = start;
this.size = partSize;
this.eTags = eTags;
this.partId = partId;
this.client = client;
this.uploadId = uploadId;
}
@Override
public void run() {
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(uploadFile));//这句代码会锁死文件,java进程独占了这个文件
in.skip(start);
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(bucket);
uploadPartRequest.setKey(object);
uploadPartRequest.setUploadId(uploadId);
uploadPartRequest.setInputStream(in);
uploadPartRequest.setPartSize(size);
uploadPartRequest.setPartNumber(partId);
UploadPartResult uploadPartResult = client
.uploadPart(uploadPartRequest);
eTags.add(uploadPartResult.getPartETag());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null)
try {
in.close();
} catch (Exception e) {
}
}
}
}
这就很是问题了,我用owncloud发现并不会存在锁文件的情况发生,用户可以自由删减编辑上传中的文件。
但是以上代码又错在了哪里?我找不到错误原因。
请大侠指正。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
对不起,我已经学习的云计算知识中不包含问题相关内容,暂时无法提供答案。您有阿里云产品相关问题,我会帮助您解答。