javaweb 上传文件使用NIO进行读写

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.UUID;

@Controller
public class MailSend {

@Value("${uploadpath:}")
private String uploadpath;

@RequestMapping("/uploadfile")
@ResponseBody
public Object uploadfile(@RequestParam("file")MultipartFile file){
FileInputStream fis = null;
FileOutputStream fos = null;

try {
fis = (FileInputStream) file.getInputStream();
fos = new FileOutputStream(new File(uploadpath + "\" + UUID.randomUUID().toString() +"_" +file.getName()));

FileChannel inChannel = fis.getChannel();
FileChannel outChannel = fos.getChannel();

int capacity = 1024;
ByteBuffer buffer = ByteBuffer.allocate(capacity);
int len = -1;
while( (len=inChannel.read(buffer))!=-1 ){
buffer.flip();

int length = 0;
while (( length=outChannel.write(buffer) )!=0){

}
buffer.clear();
}
inChannel.close();
outChannel.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}

}
————————————————
版权声明:本文为CSDN博主「临窗,听雨声」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yali_aini/article/details/91543519

原文地址:https://www.cnblogs.com/niudaxianren/p/12456362.html