从多个文件读取数据并将数据写入新文件会产生意外结果?

CodeWarrior

我已将Android设备上的mp3格式的10 MB大小的mp3文件拆分为10个大小为1 MB的文件,每个文件均由播放器成功播放,但是在读取所有10个文件的数据并将其写入单个文件时新文件的总大小超过17 MB,并且该文件无法播放。以下是代码:

文件分割的代码:

File file = new File(Environment.getExternalStorageDirectory()
                        + "/MusicFile.mp3");
    try {
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos = null;
        int size = 1048576; // 1 MB of data
        byte buffer[] = new byte[size];

        int count = 0;
        int i = 0;
        while (true) {
            i = fis.read(buffer, 0, size);
            if (i == -1) {
                break;
            }

        File filename = getSplitFileName("split_" + count);
        fos = new FileOutputStream(filename);
        fos.write(buffer, 0, i);
        ++count;
        }
        fis.close();
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    } catch (Exception e2) {
        e2.printStackTrace();
    }

文件联接的代码:

File folder = new File(cacheDirSplit.getAbsolutePath());
File files[] = folder.listFiles();

BufferedReader bufReader = null;
BufferedWriter bufWriter = null;

    if (files.length > 1) {
        try {
            File fileName = getJoinedFileName("NewMusicFile");
            String data;
            for (int i = 0; i < files.length; i++) {
                long dataSize = 0;
                bufReader = new BufferedReader(new FileReader(
                                files[i]));
                bufWriter = new BufferedWriter(new FileWriter(
                                fileName, true));
            while ((data = bufReader.readLine()) != null) {
                bufWriter.write(data);
                dataSize = dataSize + data.getBytes().length;
                }
            Log.i("TAG", "File : " + files[i] + "size ==> "
                                + dataSize);
            }
            bufReader.close();
            bufWriter.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我不明白的是,在读取每个文件时,如LOGCAT输出所打印的那样,该文件被读取为1.7MB,但是当我检查拆分后的文件只有1MB时,在设备上。代码有什么问题吗?还是我缺少其他东西?提前致谢。

绿色应用

您不能readLine()在mp3文件的内容上使用。readLine()仅适用于文本文件。而且,如果这十个文件确实可播放且是真正的mp3文件,则您必须像Onur所说的那样先剥离标题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从单个文件读取并写入2个单独的文件会产生意外结果

从两个线程写入一个文件会产生意外结果

将数据写入新文件的异常

Python-读取多个文件并写入多个新文件

Lua读取文件并写入新文件

如何使用Python删除部分XML数据并将其写入新文件

使用python从文件中提取数据并写入新文件

在python中读取文件的特定位置并将其写入新文件中

读取多个文件,提取某些列,删除某些行,然后写入多个新文件

熊猫数据框“应用于”到“ dtype”会产生意外结果

切换数据类型 int 的第 100 位会产生意外结果

具有'setFields()'修饰符的RESTful API列表文件会产生意外结果

在Java中执行批处理文件会产生意外结果

在 Linux shell 中读取文本并将某些特定行写入新文件

从文件读取数组时的ConvertTo-Json产生意外结果

打开文件会产生意外的返回值

从具有相同名称结构的文本文件中读取数据并将所有数据附加到一个新文件中

一个或多个UTF8字段包含非UTF 8数据,编辑可能会产生意外的结果

perl的$-[0]对于非ASCII数据产生意外结果

使用 "%" 操作会产生意外结果

c#从许多文件中读取并将其中一部分写入新文件

如何在javaFX中使用FileeChooser创建新文件并将数据保存在文件中?

使用Python从文本文件中提取数据并写入新文件

文件已存在,从数据帧写入新文件时出错

如何仅在5分钟后创建新文件并将所有5分钟数据写入该文件

Excel VBA宏-从现有文件中的多个工作表中复制数据,并创建新文件并将所选数据粘贴到单独的工作表中

如何将数据框列表中的多个 .csv 文件写入具有原始文件名的新文件夹?

使用 int (python) 读取日志数据的二进制文件并输出到新文件

div的不透明度会产生意外的结果并将内容与图像混合