multipartfile转化为file_将Spring MultipartFile转换为File文件。

#概述:

将Spring MultipartFile转换为File文件,都有哪些方法。

#MultipartFile#getBytes

MultipartFile有一个getBytes()方法,它可以返回文件内容的字节数组。我们可以使用这个方法将字节写入文件。

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes());

File file = new File("src/main/resources/targetFile.tmp");

try (OutputStream os = new FileOutputStream(file)) {

os.write(multipartFile.getBytes());

}

assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"))

.isEqualTo("Hello World");

getBytes()方法对于我们想在写入磁盘之前对文件进行额外操作的情况很有用,比如计算文件哈希值。

#MultipartFile#getInputStream

接下来,我们来看看MultipartFile的getInputStream()方法。

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes());

InputStream initialStream = multipartFile.getInputStream();

byte[] buffer = new byte[initialStream.available()];

initialStream.read(buffer);

File targetFile = new File("src/main/resources/targetFile.tmp");

try (OutputStream outStream = new FileOutputStream(targetFile)) {

outStream.write(buffer);

}

assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"))

.isEqualTo("Hello World");

这里我们使用getInputStream()方法来获取InputStream,从InputStream中读取字节,并将它们存储在字节[]缓冲区中。然后我们创建一个File和OutputStream来写入缓冲区的内容。

getInputStream()方法在我们需要将InputStream包裹在另一个InputStream中的情况下非常有用,比如说,如果上传的文件是gzip的,那么GZipInputStream就很有用。

#MultipartFile#transferTo

最后,我们来看看MultipartFile的transferTo()方法。

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes());

File file = new File("src/main/resources/targetFile.tmp");

multipartFile.transferTo(file);

assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"))

.isEqualTo("Hello World");

使用transferTo()方法, 我们只需要创建一个我们想要写入字节的文件, 然后把这个文件传递给transferTo()方法.

当MultipartFile只需要写入一个File时,transferTo()方法就很有用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值