android file.exists 无效,file.exists()总是在Android中失败

我正在处理音频视频合并,所有工作都正常。合并文件后,它将保存在指定的路径中。并且这个路径被传递给我们在onActivityResult中获得的另一个活动,并且此文件在videoView中播放。file.exists()总是在Android中失败

一切工作正常,有一件事让我留在一个地方。这是在我的onAcitivityResult我得到指定的路径,在日志中检查它,但是当涉及到找到该文件它我的file.exists()总是返回null。

我可以看到我的文件存储在正确的路径,但我不知道它为什么没有工作。我在另一个活动中使用了file.exists(),它工作正常,但不在此活动中。

我已经完成了每一件可能的事情来解决我的问题,并在互联网上签出但没有结果。

我试过的事情是:

File file = new File(customVideoPath);

if(file.exists()){

//do something

}else

//do something

我已经试过这也:

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath + customVideoPath);

这是一个多解决方案,我认为会工作,但没有工作:

File file = new ("/mnt"+customVideoPath);

它始终对其他条件并不执行所需的功能。

来到代码,我在此代码发送出来的数据:

文件传递路径形式

@Override

protected void onPostExecute(String s) {

super.onPostExecute(s);

Intent intent = new Intent();

intent.putExtra("addedAudioFile",s); //for single file no array is passed right now

Log.e("AUDIO_VIDEO FILE=====",s);

setResult(RESULT_OK,intent);

finish();

}

这就是非同步任务的一部分。现在,在那里我收到该文件的另一项活动是:

//getting the files after adding some changes to the selected video

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case CustomizeVideo:

if (resultCode == RESULT_OK) {

String customVideoReceived = data.getExtras().getString("addedAudioFile");

Log.e("GETTING IT=====", customVideoReceived);

File file = new File(customVideoReceived);

Log.e("FILE_CHECK",file.toString());

if (file.exists()) {

//for starting the video activity

mVideoView.setVideoPath(customVideoReceived);

mController = new MediaController(EditVideoActivity.this);

mController.setMediaPlayer(mVideoView);

mVideoView.setMediaController(mController);

mVideoView.requestFocus();

mVideoView.start();

} else {

Toast.makeText(getApplicationContext(), "Cannot play the file!", Toast.LENGTH_SHORT)

.show();

Toast.makeText(getApplicationContext(), "File does not merged successfully", Toast.LENGTH_SHORT)

.show();

}

}

}

}

但我得到的是else语句实现

登录结果:

08-23 17:23:39.818 3369-3369/in.pinelane.myhovi E/AUDIO_VIDEO FILE=====: /storage/emulated/0/HovieAddTrack.mp4

08-23 17:23:39.831 3369-3369/in.pinelane.myhovi E/GETTING  IT=====: /storage/emulated/0/HovieAddTrack.mp4

08-23 17:23:39.831 3369-3369/in.pinelane.myhovi E/FILE_CHECK: /storage/emulated/0/HovieAddTrack.mp4

在日志可以清楚地看到文件路径在那里,但在如果语句没有得到执行

我已经检查过设备内存中的文件,它已经保存了,我可以播放它,文件工作正常。

请给出一个宝贵的建议,以便我可以进一步移动。由于

另外我已经许可在我的清单为WRITE_EXTERNAL_DATA和READ_EXTERNAL_DATA。

编辑

我已经成功地实现了它,这个问题是全路径,路径未指定正确的,因此发生问题。否则,它工作正常。感谢您的大力支持。我吸取了教训。

+0

我看到''onPostExecute''告诉我你创建/渲染文件异步,这很好。无论如何,该文件在查询时没有被写入/提交(某些millis可能会有所不同)?听起来可能听起来很愚蠢,但在测试文件是否存在之前,请尝试一下完全简单的睡眠1000或类似的东西。如果这有所作为,至少有一点可以开始搜索,需要刷新文件或如何及时保存文件。 –

+0

尝试在文件对象声明之前附加文件:或file://路径 –

+0

String s的值是什么?你在onPostExecute()中使用file.exists()吗?没有?然后先做。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值