Java IO复制视频文件

Java IO复制视频文件,java,io,fileinputstream,fileoutputstream,Java,Io,Fileinputstream,Fileoutputstream,这里我写fw.write(a)五次,文件的大小增加到5倍,但原始的1.mp4和副本2.mp4都有相同的长度,即3:30分钟?简单地复制某些文件的字节并不一定意味着在使用软件检查时简单地复制。例如,视频播放器可能会读取数据,直到遇到某个终端而不向前看。然后,该终端将存在于第一个文件数据块的末尾 您可以使用十六进制编辑器打开新文件,并检查是否可以连续五次查看原始视频文件的数据 class HelloWorld { public static void main(String args[])

这里我写fw.write(a)五次,文件的大小增加到5倍,但原始的1.mp4和副本2.mp4都有相同的长度,即3:30分钟?简单地复制某些文件的字节并不一定意味着在使用软件检查时简单地复制。例如,视频播放器可能会读取数据,直到遇到某个终端而不向前看。然后,该终端将存在于第一个文件数据块的末尾

您可以使用十六进制编辑器打开新文件,并检查是否可以连续五次查看原始视频文件的数据

class HelloWorld {
    public static void main(String args[]) {
        File file = new File("d://1.mp4");
        FileInputStream fr = null;
        FileOutputStream fw = null;
        byte a[] = new byte[(int) file.length()];
        try {
            fr = new FileInputStream(file);
            fw = new FileOutputStream("d://2.mp4");

            fr.read(a);
            fw.write(a);
            fw.write(a);
            fw.write(a);
            fw.write(a);
            fw.write(a);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                fr.close();
                fw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

这将覆盖内容,所创建文件的大小将与原始文件的大小相同。

。你的问题是,为什么两个文件都有相同的播放长度,即3:30分钟,而1.mp4的大小是24.7 mb,2.mp4的大小是123mb?它不会增加歌曲的播放时间吗?简单地复制某些文件的字节并不一定意味着它在使用软件检查它们时简单地复制内容。例如,视频播放器可能会读取数据,直到遇到某个终端而不向前看。这个终端将存在于第一个文件数据块的末尾;您不能只是将视频文件连接起来以生成更长的视频文件。其次,您没有检查
read(a)
的返回值。
FileOutputStream fooStream = new FileOutputStream("FilePath", false);