2010-04-16 3 views
1

나는 & 관리 팀에서 일하고 있으며 현재 디스크 공간에 문제가있어 사용자가 리소스를보다 효율적으로 관리하도록 권장하기 위해 할당량 관리 응용 프로그램을 만드는 작업이 주어졌습니다. 하드 할당량을 시행하십시오.C#의 파일 크기 모니터링

현재 사용자 공간의 모든 파일을 탐색하기 위해 아래 코드를 사용하여 사용중인 전체 공간을 검색합니다. C#에서이 작업을 수행 할 수있는 다른 방법이없는 곳에서 보았 듯이 각 파일의 크기가 줄어들고 총계가 만들어지는 동안 문제는 상당히 높은 오버 헤드가됩니다.

try 
{ 
    long dirSize = 0; 
    FileInfo[] FI = new DirectoryInfo("I:\\").GetFiles("*.*", SearchOption.AllDirectories); 
    foreach (FileInfo F1 in FI) 
    { 
     dirSize += F1.Length; 
    } 

    return dirSize; 
} 

그래서 나는이 작업을 수행하는 빠른 방법 또는 옵션은 FileSystemWatcher를 통해 사용 가능한 사용하는 동안 파일의 크기 변화를 모니터링하는 빠른 방법을 찾고 있어요. 현재 내가 생각할 수있는 유일한 것은 파일 위치와 각 파일의 크기를 포함하는 해시 테이블을 만드는 것입니다. 따라서 크기가 변경된 이벤트가 발생하면 이전 크기와 새 크기를 비교하고 합계를 업데이트 할 수 있습니다.

의견을 보내 주시면 대단히 감사하겠습니다.

+1

'하드 쿼터 적용 안 함'에서 Windows 서버에 상당히 많은 디스크 할당량 감사 시스템이 있다는 사실을 알고 있습니까? –

+2

디스크 공간을 추가 할 생각이십니까? 프로그래밍 작업의 하루 동안 수 테라 바이트의 스토리지를 쉽게 얻을 수 있습니다. –

+0

1. 그래, 내 지역은 아니지만 정보를 얻었습니다. 이것은 사람들이 얼마나 많은 공간을 사용하고 있는지 보는 것보다 잔소리 시스템으로 파일 등을 삭제하도록 사용자를 유도하는 것입니다. 2. 예기치 않게 디스크 공간을 추가하는 것으로 간주되어 현재 다른 물건을위한 공간이 필요하기 때문에 새로운 SAN을 얻기 위해 자본금을 거치고 있습니다. 그러나 사용자가 동일한 폴더에 같은 파일의 4 개의 복사본을 가지고 있기 때문에 사용자가 과도한 사용을 인식하고 필요없는 파일을 제거하도록하는 것이 더 중요합니다. – manemawanna

답변

3

까지 자신의 관리 시스템을 코드화하려고하면 위치와 크기의 테이블이 나쁜 생각이 아닙니다. 어쩌면 FileSystemWatcher를 사용하기로 결정하여 올바른 경로에 있다고 생각합니다.

+0

의견을 보내 주셔서 감사 드리며, 나는 올바른 길을 가고 있다는 소식을 듣고 기쁘게 생각합니다. 내가 제안한 것이 XML을 재구성하고 있다는 것을 분명히 해줄 수 있습니까? 그 대신에 테이블이 아닌 정보를 저장하기위한 로컬 위치를 작성한 다음이를 기반으로 LINQ to XML 쿼리를 수행하는 것이 좋습니다. 관리 콘솔과 같은 세부 정보가 다시보고 될 중앙 XML 저장소와 같은 일부 관리 계획은 이미 가지고 있지만 우선 주요 목표는 확장 할 수있는 클라이언트를 만드는 것입니다. – manemawanna

+0

예, 그게 바로 제가 제안하는 것입니다. 나는 정말로 당신이 요구하고있는 것을 관리하기위한 전체 데이터베이스에 대한 필요성을 (당신이 나중에 찾을 수 없다는 것을 의미하지는 않는다) 볼 수 없다. 지금까지 내가 말할 수있는 한, 당신은 정말로 스토리지 (또는 데이터베이스의 "테이블")에 대해 하나의 XML 파일 만 필요합니다 - 하나의 테이블을 가진 데이터베이스의 많은 부분은 아닙니다 –

2

FileSystemWatcher를 사용하여 FileSystemWatcher에 동의하면 디렉토리 만 계산하면됩니다. 변경.

디렉토리 내용이 변경되면 변경된 내용을 해결하고 거기에서부터 작업하십시오.

Changed 이벤트를 사용하십시오.

+0

응답을 주셔서 감사합니다. 이 순간에 일을 시작한 것은 매우 초기 개발이므로 어제부터 시작되었습니다.지금은 2 개의 이벤트 핸들러가 있습니다. 하나는 새 파일 생성을 제어하는 ​​것이고, 다른 하나는 파일 크기 변경을 처리하는 것이고, 다른 하나는 파일 삭제를 처리해야합니다. – manemawanna

1

enforce quotas on NTFS volumes via Windows을 알고 계신가요? OS가 기본적으로이 기능을 지원할 때 왜 스스로 롤업합니까?

+0

네,하지만이 사실을 알고 있습니다.하지만 사용자가 자신의 거주 지역을 유지하고 드라이브를 공유하고 파일 여러 복사본을 보관하지 않고보다 부드러운 미리 알림을 제공하는 데보다 능동적으로 대처하도록 유도하는 것입니다. 응용 프로그램이 화면의 대부분을 채우기 전에 삭제할 파일에 대한 옵션을 제공합니다. – manemawanna