Android SDK에서 파일 크기를 얻습니까?
파일 크기를 가져 오는 데 문제가 있습니다. 다음 코드가 있습니다.
File file = new File("/sdcard/lala.txt");
long length = file.length();
그리고 항상 길이는 0입니다.
Android SDK (어떤 버전인지 확실하지 않음)를 사용하고 있으며 코드가 활동 내에서 실행 중이며 sdcard를 만들었습니다.
권한 문제일까요? 내가 놓친 것이 있습니까?
이 File.length()
메서드는 javadoc에 따라 다음을 반환합니다 .
"이 추상 경로 이름으로 표시된 파일의 길이 (바이트) 또는 파일이없는 경우 0L. 일부 운영 체제는 장치 또는 파이프와 같은 시스템 종속 엔티티를 나타내는 경로 이름에 대해 0L을 반환 할 수 있습니다."
보시다시피 0이 반환 될 수 있습니다.
- 파일이 존재하지만 0 바이트를 포함하는 경우.
- 파일이 존재하지 않는 경우 또는
- 파일이 일부 OS 특정 특수 파일 인 경우.
내 돈은 두 번째 경우에 있습니다. 즉, 잘못된 파일 이름 / 경로 이름이 있습니다. File.exists()
파일 이름을 호출 하여 그 내용을 확인하십시오. 다른 두 가지 경우도 가능합니다.
(기록을 위해, /proc/...
Linux 기반 시스템의 대부분의 파일은 명백한 파일 크기가 0입니다. Android는 Linux 기반입니다.)
Kb 또는 Mb 로 폴더 / 파일 크기를 얻으려면 다음 코드를 사용하십시오. 파일의 정확한 크기를 찾는 데 도움이됩니다.
public static String getFolderSizeLabel(File file) {
long size = getFolderSize(file) / 1024; // Get size and convert bytes into Kb.
if (size >= 1024) {
return (size / 1024) + " Mb";
} else {
return size + " Kb";
}
}
이 함수는 바이트 형식으로 크기를 반환합니다.
public static long getFolderSize(File file) {
long size = 0;
if (file.isDirectory()) {
for (File child : file.listFiles()) {
size += getFolderSize(child);
}
} else {
size = file.length();
}
return size;
}
다음을 사용해야합니다.
File file = new File(Uri.parse("/sdcard/lala.txt").getPath());
대신에:
File file = new File("/sdcard/lala.txt");
경로 ( "/sdcard/lala.txt")를 하드 코딩하는 대신 다음 코드를 사용하는 것이 좋습니다.
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/lala.txt");
file.length()
참고 URL : https://stackoverflow.com/questions/7131930/get-the-file-size-in-android-sdk
'Development Tip' 카테고리의 다른 글
손상된 WPF 데이터 바인딩을 감지하는 방법은 무엇입니까? (0) | 2020.11.01 |
---|---|
tkinter를 사용하여 타이머를 만드는 방법은 무엇입니까? (0) | 2020.11.01 |
임의의 부울을 생성하는 가장 빠른 방법 (0) | 2020.11.01 |
이상한 그라데이션 테두리 효과 (0) | 2020.11.01 |
"이 설치에서는 프로젝트 유형이 지원되지 않습니다."오류 (0) | 2020.11.01 |