SpringBoot中获取wav音频文件的属性

前言

wav文件定义

WAV 文件是以 WAVE 格式保存的音频文件,这是一种用于存储波形数据的标准数字音频文件格式。WAV 文件可能包含具有不同采样率和比特率的音频记录,但通常以 44.1 kHz、16 位、立体声格式保存,这是用于 CD 音频的标准格式。

wav文件结构

以下内容来源于 WAVE PCM soundfile format

创建的标准 WAVE 格式如下:

文件具体含义如下:

例如,以下是 WAVE 文件的开头 72 个字节,其中字节显示为十六进制数字:

52 49 46 46 46 24 08 00 00 57 41 56 45 66 66 6D 74 20 10 10 00 00 00 00 02 00 02 00 22 00 
22 56 00 00 88 58 58 01 0004 00 104 00 10 00 64 61 74 61 74 61 0008 08 00 00 00 00 00 00 00 00 00 00 00 00 
24 17 17 24 17 17 24 17 17 00 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d

MultipartFile与File

在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。

File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。

File 类提供了如下三种形式构造方法。

  1. File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
  2. File(String path, String name):path 是路径名,name 是文件名。
  3. File(File dir, String name):dir 是路径对象,name 是文件名。

File 类位于 java.io 包下,类定义如下所示:

package java.io;
public class File implements Serializable, Comparable<File>

MultipartFile 是 Spring 类型,代表 HTML 中 form data 方式上传的文件,包含二进制数据+文件名称。

MultipartFile 类位于 org.springframework.web.multipart,类定义如下所示:

public interface MultipartFile extends InputStreamSource

Spring MultipartFile转换为File

1、多部分文件#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()方法对于我们想要在写入磁盘之前对文件执行额外操作的情况很有用,比如计算文件哈希。

2、MultipartFile#getInputStream

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

InputStream initialS
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值