Android SD 카드 경로 문제 및 SD 카드 메모리 가 져 오 는 방법
사진 을 찍 은 후 돌파 하 는 저장 경 로 를 연구 할 때 저장 경 로 를 private String folder = "/ sdcard / DCIM / camera /" (SD 카드 에서 사진 을 찍 는 프로그램의 그림 저장 경로) 로 쓰기 시작 합 니 다.나중에 이렇게 쓰 는 것 이 보통 틀 리 지 는 않 지만 좋 지 않다 는 것 을 알 게 되 었 다. 카메라 에 따라 경로 에 문제 가 생 길 수 있 기 때문이다.좋 은 방법 은 Environment 를 통 해 경 로 를 가 져 오 는 것 입 니 다. 마지막 으로 예 를 들 어 SDCard 의 메모 리 를 어떻게 가 져 오 는 지 알려 드 립 니 다.서술 한 내용 은 다음 과 같다.
0. sd 카드 경 로 를 가 져 옵 니 다.
1. Environment 류 에 대해 이야기 합 니 다.
2. StatFs 류 를 설명 합 니 다.
3. 전체 예 에서 SDCard 메모리 읽 기
0 、 sd 카드 획득 경로 방법 1: private String folder = "/ sdcard / DCIM / camera /" (SD 카드 에 있 는 사진 프로그램의 그림 저장 경로); / /절대 옳 은 길 을 쓰 고, 사용 에 찬성 하지 않 는 다.
방법 2: public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(Android.os.Environment.MEDIA_MOUNTED); //sd 카드 존재 여부 판단 if (sdCardExist) { sdDir = Environment. getExternalStorageDirectory (); / 가 져 오기 및 디 렉 터 리 } return sdDir.toString(); }
다음: 뒤에 슬 래 쉬 를 붙 이 고 파일 이름 을 붙 입 니 다. String fileName = getSDPath () + "/" + name; / 이름 으로 디 렉 터 리 에 존재 합 니 다.
1, 설명 환경 클래스 Environment 는 접근 환경 변 수 를 제공 하 는 클래스 입 니 다. Environment 포함 상수: MEDIA_BAD_REMOVAL 설명: getExternalStorageState () 로 돌아 가 SD 카드 가 마 운 트 해제 되 기 전에 제거 되 었 음 을 표시 합 니 다. MEDIA_CHECKING 설명: getExternalStorageState () 를 되 돌려 대상 이 디스크 검 사 를 하고 있 음 을 표시 합 니 다. MEDIA_MOUNTED 설명: getExternalStorageState () 를 되 돌려 대상 이 존재 하고 읽 기 / 쓰기 권한 이 있 는 지 표시 합 니 다. MEDIA_MOUNTED_READ_ONLY 설명: getExternalStorageState () 로 돌아 가 대상 권한 을 읽 기 전용 으로 표시 합 니 다. MEDIA_NOFS 설명: getExternalStorageState () 로 돌아 가 대상 이 공백 이거 나 지원 되 지 않 는 파일 시스템 을 사용 하고 있 음 을 표시 합 니 다. MEDIA_REMOVED 설명: getExternalStorageState () 를 되 돌려 줍 니 다. SD 카드 가 존재 하지 않 으 면 되 돌려 줍 니 다. MEDIA_SHARED 설명: getExternalStorageState () 를 되 돌려 줍 니 다. SD 카드 가 설치 되 어 있 지 않 으 면 USB 대 용량 저장 소 를 통 해 공유 하여 되 돌려 줍 니 다. MEDIA_UNMOUNTABLE 설명: getExternalStorageState () 로 돌아 가 SDCard 로 돌아 가면 설치 할 수 없습니다. SDCard 가 존재 하지만 설치 할 수 없습니다. MEDIA_UNMOUNTED 설명: getExternalStorageState () 로 돌아 가 SDCard 가 지 워 졌 다 면 존재 하지만 설치 되 지 않 았 습 니 다. Environment 상용 방법: 방법: getDataDirectory () 설명: 파일 되 돌리 기, 가 져 오기 Android 데이터 디 렉 터 리. 방법: getDownloadCacheDirectory () 설명: 파일 되 돌리 기, 가 져 오기 Android 내용 디 렉 터 리 를 다운로드 / 캐 시 합 니 다. 방법: getExternalStorageDirectory () 설명: File 을 되 돌려 주 고 외부 저장 디 렉 터 리 즉 SDCard 를 가 져 옵 니 다. 방법: getExternalStoragePublicDirectory (String type) 설명: File 로 돌아 가 고 급 스 러 운 공용 외부 메모리 디 렉 터 리 를 가 져 와 서 특정한 유형의 파일 을 배치 합 니 다. 방법: getExternalStorageState () 설명: File 을 되 돌려 외부 저장 장치 의 현재 상 태 를 가 져 옵 니 다. 방법: getRootDirectory () 설명: 파일 되 돌리 기, 가 져 오기 Android 루트 디 렉 터 리 2. StatFs 클래스 설명 StatFs 는 Liux 의 df 명령 을 모 의 하 는 클래스 로 SD 카드 와 핸드폰 메모리 의 사용 상황 을 얻 었 습 니 다. StatFs 상용 방법: getAvailableBlocks() 설명: Int 로 돌아 가 현재 사용 가능 한 저장 공간 가 져 오기 getBlockCount() 설명: Int 로 돌아 가 이 지역 에서 사용 할 수 있 는 파일 시스템 수 를 가 져 옵 니 다. getBlockSize() 설명: Int, 크기, 바이트 단위, 파일 시스템 을 되 돌려 줍 니 다. getFreeBlocks() 설명: Int 로 돌아 갑 니 다. 이 블록 에 남 은 공간 입 니 다. restat(String path) 설명: 이 대상 이 인용 한 파일 시스템 을 실행 합 니 다.
3. 전체 예 에서 SDCard 메모리 읽 기 메모리 카드 Android 휴대 전 화 는 수시로 꽂 을 수 있 습 니 다. 매번 동작 은 운영 체 제 를 일 으 키 는 ACTION BROADCAST 를 진행 합 니 다. 이 예 는 위 에서 배 운 방법 을 사용 하여 SDCard 의 남 은 용량 과 총 용량 을 계산 합 니 다. 코드 는 다음 과 같 습 니 다.
package com.terry;
import java.io.File;
import java.text.DecimalFormat;
import Android.R.integer;
import Android.app.Activity;
import Android.os.Bundle;
import Android.os.Environment;
import Android.os.StatFs;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.ProgressBar;
import Android.widget.TextView;
import Android.widget.Toast;
public
class getStorageActivity extends Activity {
private Button myButton;
/** Called when the activity is first created. */
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findView();
viewHolder.myButton.setOnClickListener(new OnClickListener() {
@Override
public
void onClick(View arg0) {
// TODO Auto-generated method stub
getSize();
}
});
}
void findView(){
viewHolder.myButton=(Button)findViewById(R.id.Button01);
viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);
viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);
}
void getSize(){
viewHolder.myTextView.setText("");
viewHolder.myBar.setProgress(0);
//
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File path =Environment.getExternalStorageDirectory();
// sdcard
StatFs statfs=new StatFs(path.getPath());
// block SIZE
long blocSize=statfs.getBlockSize();
// BLOCK
long totalBlocks=statfs.getBlockCount();
// Block
long availaBlock=statfs.getAvailableBlocks();
String[] total=filesize(totalBlocks*blocSize);
String[] availale=filesize(availaBlock*blocSize);
//
int maxValue=Integer.parseInt(availale[0])
*viewHolder.myBar.getMax()/Integer.parseInt(total[0]);
viewHolder.myBar.setProgress(maxValue);
String Text=" :"+total[0]+total[1]+"
"
+" :"+availale[0]+availale[1];
viewHolder.myTextView.setText(Text);
}else
if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){
Toast.makeText(getStorageActivity.this, " sdCard", 1000).show();
}
}
// , 1 , 2 KB/MB
String[] filesize(long size){
String str="";
if(size>=1024){
str="KB";
size/=1024;
if(size>=1024){
str="MB";
size/=1024;
}
}
DecimalFormat formatter=new DecimalFormat();
formatter.setGroupingSize(3);
String result[] =new String[2];
result[0]=formatter.format(size);
result[1]=str;
return result;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.