안녕하세요 초이입니다.
저번 게시물인 MediaStore를 활용하여 파일 쓰기 예제를 이어
이번 시간에는 파일 읽기 코드를 보도록 하겠습니다.
- 이미지 파일 읽기
private void readFile() {
Uri externalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = new String[]{
MediaStore.Images.Media._ID,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.MIME_TYPE
};
Cursor cursor = getContentResolver().query(externalUri, projection, null, null, null);
if (cursor == null || !cursor.moveToFirst()) {
Log.e("TAG", "cursor null or cursor is empty");
return;
}
do {
String contentUrl = externalUri.toString() + "/" + cursor.getString(0);
try {
InputStream is = getContentResolver().openInputStream(Uri.parse(contentUrl));
if(is != null){
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} while (cursor.moveToNext());
}
- 비디오 파일 읽기
private void readFile() {
Uri externalUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection = new String[]{
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.MIME_TYPE
};
Cursor cursor = getContentResolver().query(externalUri, projection, null, null, null);
if (cursor == null || !cursor.moveToFirst()) {
Log.e("TAG", "cursor null or cursor is empty");
return;
}
do {
String contentUrl = externalUri.toString() + "/" + cursor.getString(0);
try {
InputStream is = getContentResolver().openInputStream(Uri.parse(contentUrl));
if (is != null) {
byte[] buffer = new byte[is.available()];
is.read(buffer);
File targetFile = new File(getFilesDir()+"/"+"video.mp4");
OutputStream outStream = new FileOutputStream(targetFile);
outStream.write(buffer);
Log.e("tag", "bitmap: " + fileName);
}
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} while (cursor.moveToNext());
}
- 오디오 파일 읽기
private void readFile() {
Uri externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = new String[]{
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE
};
Cursor cursor = getContentResolver().query(externalUri, projection, null, null, null);
if (cursor == null || !cursor.moveToFirst()) {
Log.e("TAG", "cursor null or cursor is empty");
return;
}
do {
String contentUrl = externalUri.toString() + "/" + cursor.getString(0);
try {
InputStream is = getContentResolver().openInputStream(Uri.parse(contentUrl));
int data = 0;
StringBuilder sb = new StringBuilder();
while ((data = is.read()) != -1) {
sb.append((char) data);
}
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} while (cursor.moveToNext());
}
네 이상입니다.
실제로 Q버전에서 동작시켜보고 올린 코드입니다.
제가 부연설명을 다 빼고 코드만 올리니깐 햇갈리시는 분도 있겠지만
코드만 보시고도 응용하실 수 있는 분들을 위해 올린거니
혹시 이해 안되는 부분이 있다면 댓글에 글 남겨주시면 답변해드리겠습니다.
항상 글 읽어 주셔서 감사합니다.
[안드로이드] 액티비티 전환 애니메이션 (0) | 2019.12.02 |
---|---|
[안드로이드] AndroidManifest.xml (0) | 2019.10.05 |
[안드로이드] MediaStore 파일 저장 (3) | 2019.07.16 |
[안드로이드] ContentValues Mime Type (0) | 2019.07.16 |
(안드로이드) Socket.io를 활용한 웹 소켓 서버, 클라이언트 구축 (0) | 2019.05.23 |