我正在尝试通过以下代码将特定.mp4(视频)文件的“内容”复制到另一个文件中:
Path source = Paths.get("E:\\Video0001.mp4");
Path destination = Paths.get("C:\\Ritesh\\Experimentation\\GOT.mp4");
Set<OpenOption> options = new HashSet<>();
options.add(APPEND);
options.add(CREATE);
try (SeekableByteChannel sbc = Files.newByteChannel(source);
SeekableByteChannel sbcdes = Files.newByteChannel(destination, options)) {
ByteBuffer buf = ByteBuffer.allocate(10);
String encoding = System.getProperty("source.encoding");
while (sbc.read(buf) > 0) {
buf.rewind();
ByteBuffer bb =
ByteBuffer.wrap(((Charset.forName(encoding).decode(buf)).toString()).getBytes());
sbcdes.write(bb);
buf.flip();
}
} catch (IOException x) {
System.out.println("caught exception: " + x);
}
代码执行,目标.mp4文件在所需的位置创建,但困境是.mp4文件不会运行....它给我一个错误信息,说明输入的格式不能认识到...文件操作对我来说仍然是一个新奇事物,让我无法解决这个难题...... 任何形式的援助都将受到狂热的赞赏! =)
答案 0 :(得分:3)
问题是您正在解码和编码数据(将其转换为String
并返回)。这会破坏任何不是文本的东西。 MP4文件不是文本。
这应该有效,而不是你有的循环:
while (sbc.read(buf) > 0) {
buf.flip()
sbcdes.write(buf);
buf.clear();
}