2011-03-21 5 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. 문자열에는 uri가 필요하지 않습니다. 파일에 uri 매개 변수가있는 생성자가 있습니다. 참조 : http://developer.android.com/reference/android/net/Uri.html – Daniel

0

몇 가지 문제가있을 수 있습니다.

첫째, mediaUri가 null

두 번째 수는 ReadFile을 자신 만의 방법 (나는 그것이 추측), 다음 방법을 게시하거나에서 ReadFile에 시도/캐치를해야 하나입니다.
이유가 이것입니다. 귀하의 코드로 갈 경우, 당신은 어떤 데이터를 포함해서는 안 새로운 파일을 만들고, 그래서 당신은 무엇을 readFile을 사용하고 있습니까? 파일이 존재하고 mediaUri가 null이 아니면 null 예외는 readFile 메소드에서 발생합니다. URI

파일 MFILE = 새 파일에서 파일을 (새 URI (mediaUri.toString())) 만드는 동안

1

문제였다;

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()이 장치 문자열 (file :)과 경로 자체를 만듭니다. 대신 uri.getPath()를 사용해야합니다. 이것은 Path가 아니라 String을 반환합니다. 아마/또는 \ 시작과 함께. 모든 시스템에서 작동하도록 해제해야합니다. 올바른 OS 독립적 라인은 다음과 같습니다.

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

win, mac, linux 프로젝트에서 작동합니다.

관련 문제