安卓:复制RawFile到SD卡(视频MP4) [英] Android : Copy RawFile to Sdcard (video 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屋!