1

我正在尝试创建一个 mp3 文件的副本。这我需要修剪那个 mp3 文件。所以我猜可以使用输入、输出流。可以正常文本文件类型的复制将能够创建一个文件可以播放。对java中的文件处理有很好的了解的人可以帮助我。

4

2 回答 2

2

MP3 文件是二进制文件。所以只要你复制MP3使用二进制文件操作复制就会成功。

但是,要修剪 MP3 文件,您需要了解 MP3 文件的结构。MP3 文件由一系列 MP3 帧组成。每个帧都以 MP3 标头开始,然后是数据。MP3 帧头包含信息,您可以使用这些信息找到帧长度。

有关 MP3 标头的更多详细信息,请访问 http://www.id3.org/mp3Frame

因此,只要您以整数帧复制,就可以了。即便如此,解码器也会忽略不完整的帧。

于 2012-07-03T16:57:46.453 回答
1

下面的代码是复制 mp3 文件或其他所有内容的解决方案。我从未经历过修剪部分。但是,我认为仅通过指定所需的缓冲区量来修剪文件在逻辑上是可能的。)实际上dst是目录中复制文件的名称。

private void copyFile(String src, String dst) {
    FileInputStream inputStream; // create an input stream
    FileOutputStream outputStream; // create an output stream
    try {
        inputStream = new FileInputStream(src); // create object
        outputStream = openFileOutput(dst, Context.MODE_PRIVATE); // save your file in private mode, which makes it inaccessible by other applications
        int bufferSize;
        byte[] bufffer = new byte[512]; // I think logically here could be useful for trimming the file. I mean just copy an specified part of the file.
        while ((bufferSize = inputStream.read(bufffer)) > 0) {
            outputStream.write(bufffer, 0, bufferSize);
        }
        inputStream.close();
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这是关于如何复制文件的建议,它将以您的应用程序包名称将它们复制到内部存储中。此外,我还没有测试装饰部分。所以,我不确定。

还有一件事,您可以通过以下方式获取应用程序的路径目录

getFilesDir();
于 2017-04-28T13:48:01.220 回答