문제

주어진 드라이브/폴더/디렉토리에 대한 최대 허용 파일 크기를 (기본적으로) 얻는 방법을 아는 사람이 있습니까? 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.)을 검색하는 것은 어떻습니까? 그것은 당신에게 최소한 지원되는 파일 크기에 대한 아이디어를 제공해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top