안 드 로 이 드 는 핸드폰 내부 저장 공간 과 외부 저장 공간 을 가 져 옵 니 다.
4730 단어 데이터 영구 화 저장 소
이 코드 세 션 은 내부 와 외부 저장 공간 크기 를 가 져 올 수 있 습 니 다.
import
java
.
io
.
File
;
import
android
.
os
.
Environment
;
import
android
.
os
.
StatFs
;
public
class
StorageUtil
{
private
static
final
int
ERROR
=
-
1
;
/**
* SDCARD 저장 여부
*/
public
static
boolean
externalMemoryAvailable
()
{
return
android
.
os
.
Environment
.
getExternalStorageState
().
equals
(
android
.
os
.
Environment
.
MEDIA_MOUNTED
);
}
/**
* 핸드폰 내부 의 남 은 저장 공간 가 져 오기
* @return
*/
public
static
long
getAvailableInternalMemorySize
()
{
File
path
=
Environment
.
getDataDirectory
();
StatFs
stat
=
new
StatFs
(
path
.
getPath
());
long
blockSize
=
stat
.
getBlockSize
();
long
availableBlocks
=
stat
.
getAvailableBlocks
();
return
availableBlocks
*
blockSize
;
}
/**
* 휴대 전화 내부 의 총 저장 공간 가 져 오기
* @return
*/
public
static
long
getTotalInternalMemorySize
()
{
File
path
=
Environment
.
getDataDirectory
();
StatFs
stat
=
new
StatFs
(
path
.
getPath
());
long
blockSize
=
stat
.
getBlockSize
();
long
totalBlocks
=
stat
.
getBlockCount
();
return
totalBlocks
*
blockSize
;
}
/**
* SDCARD 남 은 저장 공간 가 져 오기
* @return
*/
public
static
long
getAvailableExternalMemorySize
()
{
if
(
externalMemoryAvailable
())
{
File
path
=
Environment
.
getExternalStorageDirectory
();
StatFs
stat
=
new
StatFs
(
path
.
getPath
());
long
blockSize
=
stat
.
getBlockSize
();
long
availableBlocks
=
stat
.
getAvailableBlocks
();
return
availableBlocks
*
blockSize
;
}
else
{
return
ERROR
;
}
}
/**
* SDCARD 의 총 저장 공간 가 져 오기
* @return
*/
public
static
long
getTotalExternalMemorySize
()
{
if
(
externalMemoryAvailable
())
{
File
path
=
Environment
.
getExternalStorageDirectory
();
StatFs
stat
=
new
StatFs
(
path
.
getPath
());
long
blockSize
=
stat
.
getBlockSize
();
long
totalBlocks
=
stat
.
getBlockCount
();
return
totalBlocks
*
blockSize
;
}
else
{
return
ERROR
;
}
}
}
1. 하드웨어 의 block size 는 "sector size" 여야 합 니 다. Liux 의 섹 터 크기 는 512 byte 입 니 다.
2. 파일 시스템 의 파 티 션 이 있 는 block size 는 "block size" 입 니 다. 크기 가 다 르 면 도구 로 볼 수 있 습 니 다.
3. 파일 시스템 의 파 티 션 이 없 는 block size 는 "block size" 라 고도 부 릅 니 다. 크기 는 1024 byte 를 말 합 니 다.
4. Kernel buffer cache 의 block size 는 바로 "block size" 이 고 대부분 PC 는 1024 입 니 다.
5. 디스크 섹 션 의 "cylinder size" 를 fdisk 로 볼 수 있 습 니 다.
여기 있 는 block size 는 두 번 째 상황 입 니 다. 보통 SD 카드 는 fat 32 의 파일 시스템 이 고 block size 는 4096 입 니 다.
이렇게 하면 휴대 전화의 내부 저장 공간 과 sd 카드 저장 공간의 총 크기 와 사용 가능 한 크기 를 알 수 있다.