`

文件IO,音频buffer处理

 
阅读更多

1,获取一个文件夹下所有文件对象

//获取一个文件夹下所有文件的名字,并保存在list中
public  static  ArrayList<String> getFileName(String path) {
    File[] files=new File(path).listFiles();
    // 举例File[] files=new File("/sdcard/my/").listFiles();
ArrayList<String> list=new ArrayList<>();
    if (files != null) { // 先判断目录是否为空,否则会报空指针
for (File file : files) {
                String fileName = file.getName();
                 list.add(fileName);
                }
            }
    return list;
}

 

2.把文件转换为byte[]

 

    private byte[] readWavFile(File file) throws IOException {
            InputStream is = new FileInputStream(file);
            //InputStream转换为byte[]
byte[] data = new byte[is.available()];
            is.read(data);
return data;
    }

 

3.每次复制一小段数据到buffer中

//每次复制3200byte的数据到buffer中,直到复制完
byte[] data = readWavFile(file);
if (data != null && data.length > 0) {
    mEngine.start();
    byte[] buffer = new byte[3200]; //多次分段复制,每次最大只复制3200byte的数据
int i = 0;//已经复制的data的长度
int j = 0;//下次要复制到data长度的数据 (不是要复制的长度,而是要复制到某个位置的长度,比如总长3000,每次复制500,那么第二次j=1000)
int dataLength = data.length;
    while (i < dataLength) {
        j += 3200;
        //要复制的长度位置不可能超过数据长度本身
if (j > dataLength) {
            j = dataLength;
        }
        //开始把数据复制到buffer中
System.arraycopy(data, i, buffer, 0, j - i);
        i += 3200;
        // 自行feed数据
mEngine.feedData(buffer);
        try {
            Thread.sleep(97);
            if(mEngine == null) return;
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    mEngine.stopRecording();
}

 

分享到:
评论

相关推荐

    前端开源库-iobuffer

    4. 支持流处理:`iobuffer`支持流式读写,可以处理大文件或网络数据流,避免一次性加载大量数据导致的内存压力。 三、应用场景 1. 文件上传下载:在网络传输中,`iobuffer`可以用来接收和发送二进制数据,如分块...

    java io读取文件

    在Java编程语言中,`IO`(Input/Output)是处理数据输入和输出的核心部分,尤其是在处理大数据量文件时显得尤为重要。Java IO API提供了一系列类和接口,使得开发者能够高效地读取、写入和操作文件。下面我们将深入...

    C#做的音频合并器和文件的打操作

    C#提供了一些内置的类,如System.IO命名空间下的FileStream、StreamReader和StreamWriter,用于读取、写入和处理文件。在音频合并过程中,我们可能需要使用FileStream来打开音频文件,然后使用BinaryReader或...

    java IO流实例,包括文件的读写、上传和下载

    本实例主要探讨了如何使用Java IO流进行文件的读写、上传和下载,同时也涵盖了处理文本数据和音频文件等内容。 一、文件的读写 Java中的File类是文件操作的基础,它提供了创建、删除、重命名等基本功能。而IO流则...

    文件流IO,android文件流

    1. 字节流:Java中的FileInputStream和FileOutputStream用于读写二进制文件,如图片、音频等。例如,使用FileInputStream读取文件: ```java FileInputStream fis = new FileInputStream("file.txt"); byte[] ...

    Java实现文件复制,File文件读取,写入,IO流的读取写入

    - **字节流**:适用于处理二进制数据,如图片、音频文件等。`FileInputStream`和`FileOutputStream`是字节流的典型代表,用于读写文件。 - **字符流**:适用于处理文本数据,内部会进行编码和解码。` FileReader`...

    java零基础自学 之 JavaIO流处理

    字节流处理8位的字节,适用于二进制文件,如图片、音频等。 2. **IO类的分类** Java的IO类主要分为两大类:字符流(Reader和Writer)和字节流(InputStream和OutputStream)。Reader和Writer是字符流的基类,...

    提供反向播放音频的类

    6. **错误处理**:为了确保程序的健壮性,`AudioBuffer`还可能包含适当的错误处理代码,如检查文件是否存在,处理IO异常等。 为了更好地理解`AudioBuffer.java`的工作机制,我们需要查看源码并分析其中的方法和类...

    IO流结构图_io_java_思维导图_

    字节流处理原始的8位字节,适用于所有类型的数据,包括图像、音频和二进制文件,其主要类有InputStream和OutputStream。 File类是Java.io包中的一个重要类,它提供了与文件和目录操作相关的功能。通过File对象,...

    Java二进制IO类与文件复制操作实例

    这些类允许程序员高效地读取和写入文件、网络流或其他数据源,如图像、音频文件或数据库记录。本篇文章将深入探讨Java中的二进制IO类,并通过一个具体的文件复制操作实例来说明其应用。 1. **Java IO流基础** Java...

    java中的IO的基础教学(1)

    字节流处理单个字节的数据,如8位图像或音频;字符流处理Unicode字符,适用于文本数据。 2. 按照流向划分:输入流(InputStream/Reader)和输出流(OutputStream/Writer)。输入流用于从数据源读取数据,而输出流...

    Java二进制IO类与文件复制操作实例.zip

    在Java编程语言中,二进制输入/输出(IO)类是处理非文本数据的关键工具,如图片、音频文件或任何非ASCII字符的数据。这些类主要用于读取和写入二进制文件,如图片、视频、PDF文档等。在本实例中,我们将深入探讨...

    C++课件_IO流_二进制文件流操作PPT

    二进制文件流主要用于处理二进制数据,例如图片、音频、数据库记录等。C++的`&lt;fstream&gt;`库提供了`std::ifstream`(输入文件流)和`std::ofstream`(输出文件流)类,用于对二进制文件进行操作。 1. **打开文件** - ...

    java IO文档.docx

    字节流以字节(8位)为单位进行读写,适合处理任何类型的数据,包括二进制文件如图片、音频等。而字符流则以字符为单位,主要用于处理文本数据,它的出现是因为不同数据编码(如ASCII、Unicode)的需求,字符流在...

    彻底明白java的io系统

    字节流处理的是8位的字节,适用于所有类型的数据,如图片、音频、视频等二进制数据。而字符流是为了解决文本处理的需求,它基于Unicode字符集,如InputStreamReader和OutputStreamWriter。 2. **节点流与处理流** ...

    基于java的二进制IO类与文件复制操作实例.zip

    4. `java.io.IOException`:在处理IO操作时,可能会遇到诸如文件未找到、权限问题等异常,Java通过这个异常类来表示这些错误。 5. `byte[]` 和 `BufferedInputStream`/`BufferedOutputStream`:为了提高效率,通常...

    JavaSE的项目源码、主要是文件的IO操作! Java学习资料

    Java提供了多种类型的流,包括字节流(处理二进制数据,如图片或音频文件)和字符流(处理文本数据)。字节流分为输入流和输出流,如FileInputStream和FileOutputStream,用于读写文件;字符流则有Reader和Writer,...

    java io包课件

    这些数据流可以是字节流(处理字节数据,如图片或音频文件)或字符流(处理字符数据,如文本文件)。 对于字节流,`FileInputStream`和`FileOutputStream`是最基本的类,它们分别用于读取和写入字节数据到文件。...

    java的IO简单实例

    字节流是以8位字节为单位进行数据传输,适用于处理任何类型的数据,包括图像、音频、二进制文件等。Java中的字节流分为两类:输入流(InputStream)和输出流(OutputStream)。例如,FileInputStream和...

Global site tag (gtag.js) - Google Analytics