通过java进行面向文件的操作

时间:2014-08-16 11:07:02

标签: java file

我正在尝试通过以下代码将特定.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文件不会运行....它给我一个错误信息,说明输入的格式不能认识到...文件操作对我来说仍然是一个新奇事物,让我无法解决这个难题...... 任何形式的援助都将受到狂热的赞赏! =)

1 个答案:

答案 0 :(得分:3)

问题是您正在解码和编码数据(将其转换为String并返回)。这会破坏任何不是文本的东西。 MP4文件不是文本。

这应该有效,而不是你有的循环:

while (sbc.read(buf) > 0) {
    buf.flip()
    sbcdes.write(buf);
    buf.clear();
}