安卓:复制RawFile到SD卡(视频MP4) [英] Android : Copy RawFile to Sdcard (video mp4)

查看:119
本文介绍了安卓:复制RawFile到SD卡(视频MP4)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


什么是错的这个code?
我在我的项目(​​MP4 videofile)已经RAW文件,
当我这样做,然后我retreive文件从SD卡的文件是不相同等视频无法负荷:(
你有另一种方式来全自动复制原始文件到SD卡?
谢谢

 字符串FICHIER_BLOW =blowvid4.mp4;
文件F =新的文件(Environment.getExternalStorageDirectory(),FICHIER_BLOW);
尝试 {
    如果(f.createNewFile()){
    FileWriter的ecrivain =新的FileWriter(F);
    BufferedWriter将bufEcrivain =新的BufferedWriter(ecrivain);
    的BufferedInputStream VideoReader =新的BufferedInputStream(getResources()openRawResource(R.raw.blow)。);
    而(VideoReader.available()大于0){
        bufEcrivain.write(VideoReader.read());
    }
    bufEcrivain.close();

    VideoView videoView =(VideoView)findViewById(R.id.VideoView);
    的MediaController的MediaController =新的MediaController(本);
    mediaController.setAnchorView(videoView);
    视频= Uri.fromFile(F);
    videoView.setMediaController(的MediaController);
    videoView.setVideoURI(视频)
    videoView.start();
    }
}赶上(IOException异常E){
    // TODO自动生成的catch块
    e.printStackTrace();
}
 

解决方案

如果你使用一个InputStream来读取,使用一个OutputStream来写,即的BufferedOutputStream包裹的FileOutputStream。同样,你的code是pretty的效率不高,因为它仅复制一个字节的时间。我建议创建一个字节数组缓冲区,并使用这些相关的读/写方法:

  INT BufferedInputStream.read(byte []的缓冲区,诠释抵消,诠释长度)
无效BufferedOutputStream.write(byte []的缓冲区,诠释抵消,诠释长度)
 


What is wrong on this code ?
I've a Raw file in my project (mp4 videofile),
when i do this, and then i retreive file from SDcard file are not identical so video can not be load :(
Do you have another way to automaticly copy a raw file to sdcard ?
Thanks

String FICHIER_BLOW = "blowvid4.mp4";
File f=new File(Environment.getExternalStorageDirectory(), FICHIER_BLOW);
try {
    if (f.createNewFile()){
    FileWriter ecrivain = new FileWriter(f);
    BufferedWriter bufEcrivain = new BufferedWriter(ecrivain);
    BufferedInputStream VideoReader = new BufferedInputStream(getResources().openRawResource(R.raw.blow));
    while( VideoReader.available() > 0 ){
        bufEcrivain.write(VideoReader.read());
    }
    bufEcrivain.close();

    VideoView videoView = (VideoView) findViewById(R.id.VideoView);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    video =Uri.fromFile(f);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);
    videoView.start();
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

解决方案

If you use an InputStream to read, use an OutputStream to write, i.e. a BufferedOutputStream-wrapped FileOutputStream. Also, your code is pretty inefficient, as it only copies one byte at a time. I'd suggest creating a byte array buffer and using these relevant read/write methods:

int BufferedInputStream.read(byte[] buffer, int offset, int length)
void BufferedOutputStream.write(byte[] buffer, int offset, int length)

这篇关于安卓:复制RawFile到SD卡(视频MP4)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆