문제

파일 서버 사용률을 줄여야하므로 오래된 파일 (예 : Excel/Access/Txt)을 압축하고 싶습니다.

수천 개의 파일이 포함 된 일부 폴더가 있으므로 전체 디렉토리를 하나의 큰 파일로 만지고 싶지 않습니다. 사용자가 데이터를 쉽게 찾을 수 있도록 많은 작은 파일을 갖는 것이 선호됩니다. 그들이 찾고있는 '버킷'.

C#을 사용하여 디렉토리를 읽고 파일을 연간 몇 달 그룹으로 지퍼하는 방법이 있습니까 (한 해의 모든 파일은 하나의 zip에 함께 배치)?

아니면 AutoIT와 같은 스크립트를 사용하는 것이 더 낫습니까?

아니면 이미이 작업을 수행하는 프로그램이 있으므로 코드를 코딩 할 필요가 없습니까?

도움이 되었습니까?

해결책

귀하의 질문이 지핑, 특정 연도/월 또는 둘 다에서 파일을 선택하는 것에 관한 것인지 확실하지 않습니다.

Peter가 이미 7-zip과 Sharpziplib를 언급했습니다. 나는 개인적으로 후자에 대한 경험이 있지만 긍정적이고 함께 일하기 쉽습니다.

파일을 그룹화하는 것에 대해 폴더의 모든 파일을 반복하여 생성 된 날짜 또는 마지막 수정 날짜로 그룹화하여 수행 할 수 있습니다.

가짜:

var files = new Dictionary<DateTime, IList<string>>();
foreach (var file in Directory.GetFiles(...)) {
   var fi = new FileInfo(file);
   var date = fi.CreatedDate();
   var groupDate = new DateTime(date.Year, date.Month);

   if (!files.ContainsKey(groupDate)) files.Add(groupDate, new Collection<string>());

   files[groupDate].Add(file);
}

이제 당신은 뚜렷한 연도/월 키가 포함 된 사전과 해당 그룹에 속하는 파일 목록을 포함해야합니다. 그래서 지핑을 위해

가짜:

foreach (var entry in files) {
   var date = entry.Key;
   var list = entry.Value;

   // create zip-file named date.ToString();
   foreach (var file in list) {
      // add file to zip
   } 
}

다른 팁

확실히 당신은 약간의 c#과 라이브러리로 이것을 할 수 있습니다. 7-zip 또는 Sharpziplib.

System.io.directory.getFiles ()를 사용하여 각 디렉토리의 파일을 통해 루프하고 파일 이름으로 구문 분석하고 7-ZIP 또는 SharpZiplib 객체에 추가 할 수 있습니다. 수천 개의 파일이라면 파일에 세금을 부과하지 않도록 서비스 나 서비스에 버리는 것이 가장 좋습니다.

행운을 빕니다!

편집하다: 부록은 생성 된 날짜 또는 기타 파일에 의해 구문 분석 해야하는 경우 각 파일에 대해 System.io.fileInfo 객체를 사용할 수 있습니다.

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