【发布时间】:2017-09-26 15:36:46
【问题描述】:
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();
}
}
}
}
这里我写了五次 fw.write(a),文件的大小增加到了 5 倍,但是原始的 1.mp4 和副本 2.mp4 的长度相同,即 3:30 分钟?
【问题讨论】:
-
有趣。你的问题是?
-
为什么两个文件的播放长度相同,即 3:30 分钟,而 1.mp4 的大小为 24.7 mb 而 2.mp4 的大小为 123mb?不会增加歌曲的播放时间吗..?
-
简单地复制某些文件的字节并不一定意味着它在使用软件检查它们时只是复制了一些东西。例如,视频播放器可能会读取数据,直到遇到某个终端并且不向前看。然后,此终端将存在于第一个文件数据块的末尾。
-
首先,MP4 格式不是这样工作的;您不能只是连接视频文件来制作更长的视频文件。其次,你没有检查
read(a)的返回值。
标签: java io fileinputstream fileoutputstream