使Android文件路径统一

时间:2015-09-28 20:56:22

标签: android file android-studio filepath

我有三段代码:一段用于设置文件的原始文件路径,一段用于重命名文件,另一段用于匹配文件,以便可以播放文件(录音)。

我的问题是,据我所知,并且我能在网上找到的东西,我需要" 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;

1 个答案:

答案 0 :(得分:0)

我认为file://是文件的URI,例如在媒体播放器中,资源可以存在于本地存储(文件://)或互联网(http://)上

To"转换"字符串到URI使用

Uri uri = Uri.parse("http://www.google.com");

并且"转换"要使用的URI

File file = new File(uri.getPath());