.NET에서 max 허용 파일 크기를 얻는 방법?
문제
주어진 드라이브/폴더/디렉토리에 대한 최대 허용 파일 크기를 (기본적으로) 얻는 방법을 아는 사람이 있습니까? FAT16에서와 같이 그것은 ~ 2GB, fat32는 내가 기억하는 한 4GB였으며 새로운 NTFS 버전의 경우 그 이상입니다. 모노와 기본 OS는 물론입니다.
내가 읽을 수있는 것이 있습니까? 기본적으로 i -know- 앱은 2GB보다 더 큰 단일 파일을 생성 할 것이며 사용자가 해당 출력 경로를 설정할 때 확인하고 싶습니다 ...
건배 & 감사, -j
해결책
이것은 이상적인 솔루션은 아니지만 어쨌든 다음을 제안 할 것입니다.
// Returns the maximum file size in bytes on the filesystem type of the specified drive.
long GetMaximumFileSize(string drive)
{
var driveInfo = new System.IO.DriveInfo(drive)
switch(driveInfo.DriveFormat)
{
case "FAT16":
return 1000; // replace with actual limit
case "FAT32":
return 1000; // replace with actual limit
case "NTFS":
return 1000; // replace with actual limit
}
}
// Examples:
var maxFileSize1 = GetMaximumFileSize("C"); // for the C drive
var maxFileSize2 = GetMaximumFileSize(absolutePath.Substring(0, 1)); // for whichever drive the given absolute path refers to
이것 Wikipedia의 페이지에는 다양한 파일 시스템에 대한 최대 파일 크기의 포괄적 인 목록이 포함되어 있습니다. 체크인하려는 파일 시스템의 수에 따라 GetMaximumFileSize
함수, 당신은 스위치 명령문이 아닌 사전 객체 나 간단한 데이터 파일을 사용할 수 있습니다.
이제, 당신 5월 WMI 또는 Windows API를 사용하여 직접 파일 크기를 직접 검색하십시오. 그러나 이러한 솔루션은 물론 Windows 와만 호환됩니다 (예 : Mono/Linux는 운이 없습니다). 그러나, 나는 이것을 조회 테이블의 사용에도 불구하고 합리적으로 좋은 순수한 관리 솔루션이라고 생각하고 모든 OSS에서 안정적으로 작동하는 보너스가 있습니다.
도움이되기를 바랍니다.
다른 팁
System.info.driveInfo.driveFormat을 사용하여 드라이브의 파일 시스템 (NTFS, FAT, ECT.)을 검색하는 것은 어떻습니까? 그것은 당신에게 최소한 지원되는 파일 크기에 대한 아이디어를 제공해야합니다.