2011-03-21 8 views
1

Uriからファイルを作成中に例外が発生しました。例外の値はnullを示します。Uri例外からファイルを作成します。

try { 
File mFile = new File(new URI(mediaUri.toString())); 
data = readFile(mFile);  
} catch (Exception e) { 
Log.e("Error", e.getLocalizedMessage()); 
} 

事前に

感謝を助けてください。

答えて

-1

mediaURIが修正されたファイルパスを確認する必要があります。修正されたファイルパスではないと思います。

もう少し説明していただけますか?

+2

@QBLive、回答を編集するのではなく、質問やコメントを追加する必要があります。紛らわしいものです。 –

+0

ファイルパスの例:file:///tmp/android.txt、あなたはstringにuriは必要ありません。ファイルには、uriパラメータを持つコンストラクタがあります。参照先:http://developer.android.com/reference/android/net/Uri.html – Daniel

0

いくつかのことが間違っている可能性があります。

まず、mediaUriは

第二にnullになる可能性があり、(私はそれがあると思います)、その後、あなたがメソッドを投稿したり、readFileの中で、あなたのtry/catchを行う必要がありますいずれかreadFileの独自の方法です。
これがこの理由です。私があなたのコードで行くならば、あなたはデータを含んではいけない新しいファイルを作成しているので、あなたは何のためにreadFileを使っていますか?ファイルが存在し、mediaUriがnullでない場合、null例外はreadFileメソッドからのものです。

1

URI

ファイルMFILE =新しいファイル(新しいURI(mediaUri.toString()))からファイルを作成中に問題がありました。

mediaUri.toString()は、ビデオファイルの正しいパスを取得するからビデオファイルの正しいパスを返していませんでした

File mFile = new File(new URI(getRealPathFromURI(contentUri)); 


    public String getRealPathFromURI(Uri contentUri) { 

    String[] proj = { MediaStore.Video.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

与えからのビデオファイルのパスを取得しながら、この答えはuserfullですUri

0

問題は、uri.toString()がデバイス(ファイル:)の文字列とパス自体を作成することです。代わりにuri.getPath()を使用してください。これはパスではなく文字列を返します。おそらく余分な/または\を先頭につけて。すべてのシステムで動作するように、それを断念すべきです。正確なOSに依存しない行は次のようになります。

File mFile = new File(new Path(mediaUri.getPath()).toString); 

win、mac、linuxのプロジェクトで動作します。

関連する問題