Nic*_*nsk 5 java video android android-sdcard
这段代码有什么问题?
我在我的项目(mp4 videofile)中有一个Raw文件,
当我这样做,然后我从SDcard文件中检索文件不相同所以视频无法加载:(
你有另一种方法自动复制原始文件到SD卡?
谢谢
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();
}
Run Code Online (Sandbox Code Playgroud)
如果使用InputStream进行读取,请使用OutputStream进行写入,即使用BufferedOutputStream包装的FileOutputStream.此外,您的代码效率很低,因为它一次只复制一个字节.我建议创建一个字节数组缓冲区并使用这些相关的读/写方法:
int BufferedInputStream.read(byte[] buffer, int offset, int length)
void BufferedOutputStream.write(byte[] buffer, int offset, int length)
Run Code Online (Sandbox Code Playgroud)
它有效,谢谢
BufferedOutputStream bufEcrivain = new BufferedOutputStream((new FileOutputStream(f)));
BufferedInputStream VideoReader = new BufferedInputStream(getResources().openRawResource(R.raw.blow));
byte[] buff = new byte[32 * 1024];
int len;
while( (len = VideoReader.read(buff)) > 0 ){
bufEcrivain.write(buff,0,len);
}
bufEcrivain.flush();
bufEcrivain.close();
Run Code Online (Sandbox Code Playgroud)