我有三段代码:一段用于设置文件的原始文件路径,一段用于重命名文件,另一段用于匹配文件,以便可以播放文件(录音)。
我的问题是,据我所知,并且我能在网上找到的东西,我需要" file://"当我重命名它时,在文件路径的其余部分之前...否则当我尝试播放时,MediaPlayer会抛出异常。经过多次搜索,我还没有想出一个很好的方法来让它们变得统一,以便“匹配”#34;代码可以处理所有文件。我最好的猜测是,如果我能找到一种不必使用" file://"的方法,那将是理想的。在文件路径的其余部分之前。
1)设置原始文件路径的代码:
public void setFileNameAndPath(){
int count = 0;
File f;
do{
count++;
mFileName = getString(R.string.default_file_name)
+ " #" + (mDatabase.getCount() + count) + ".mp4";
mFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + mFileName;
f = new File(mFilePath);
}while (f.exists() && !f.isDirectory());
}
2)重命名文件路径:
public void rename(int position, String name) {
//rename a file
String mFilePath = "file://" + Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + name;
File f = new File(mFilePath);
if (f.exists() && !f.isDirectory()) {
//file name is not unique, cannot rename file.
Toast.makeText(mContext,
String.format(mContext.getString(R.string.toast_file_exists), name),
Toast.LENGTH_SHORT).show();
} else {
//file name is unique, rename file
File oldFilePath = new File(getItem(position).getFilePath());
oldFilePath.renameTo(f);
mDatabase.renameItem(getItem(position), name);
notifyItemChanged(position);
}
}
3)匹配文件:
Intent iin = getIntent();
Bundle b = iin.getExtras();
newString = (String) b.get("filename");
mFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + newString;
答案 0 :(得分:0)
我认为file://是文件的URI,例如在媒体播放器中,资源可以存在于本地存储(文件://)或互联网(http://)上
To"转换"字符串到URI使用
Uri uri = Uri.parse("http://www.google.com");
并且"转换"要使用的URI
File file = new File(uri.getPath());