2010-02-28 2 views
5

android.net.URI 객체 (mediaStore.ACTION_VIDEO_CAPTURE 다음에 onActivityResult에 의해 반환되는 종류) : content : // media/video/media/33.Android : android.net.URI에서 파일 구성

이 파일을 File 객체로 변환하고 싶습니다. File 객체 만 필요합니다. File이 필요한 다른 생성자로 전달해야합니다.

URI를 어떻게 File 객체로 변환 할 수 있습니까? 시도해 보면

File newFile = new File(myURI); 

이클립스에서 URI를 String으로 변환해야한다는 오류가 표시된다. 생성자에서 URI.getPath()를 제공하는 것도 도움이되지 않습니다.

이 질문은 불행히도 좋은 답변이없는 것처럼 보이는 'How can I convert android.net.uri object to java.net.uri object?'질문과 관련이 있지만 Java URI가 아닌 File 객체를 원합니다.

내가 가장 좋은 방법은 무엇이든간에 bytestream 및 back에 다시 써야하는지 상관하지 않습니다.

내가 크로스 게시 할 경우 사과 my own question,하지만 일을 좀 더 명확하게해야 할 수도 있습니다.

+0

가능한 복제본 http://stackoverflow.com/questions/2975197/convert-file-uri-to-file-in-android –

답변

6

URI를 어떻게 File 객체로 변환 할 수 있습니까?

신뢰할 수있는 SDK 호환 방식으로는 사용할 수 없습니다.

"테이블 항목이 content : URI 인 경우 파일을 열어서 직접 읽지 마십시오 (권한 문제로 인해 실패 할 수 있음) 대신 ContentResolver.openInputStream()을 호출하여 당신이 데이터를 읽기 위해 사용할 수있는 InputStream 오브젝트를 얻을. "

당신은 수락하고 InputStream을 활용하는 다른 코드를 수정해야합니다

(http://developer.android.com/guide/topics/providers/content-providers.html에서)

. 또는 다른 코드가 데이터를 수정해야한다면 OutputStream을 사용해야합니다. 주제는 위에 링크 된 페이지에서 다룹니다.

+0

수정할 수 있다고 생각하지 않습니다. MediaFileSource입니다. http://code.google.com/apis/gdata/javadoc/com/google/gdata/data/media/MediaFileSource.html#constructor_summary InputStream을 가져 와서 File에 쓸 수 있습니까? – AP257

+0

어쩌면 이런가? http://www.exampledepot.com/egs/java.io/CopyFile.html – AP257

+0

'MediaFileSource'를 사용하지 마십시오. 'MediaStreamSource'를 사용하십시오. – CommonsWare