2010-06-17 6 views
0

각 파일의 파일 이름을 추가하려고하는 zip 파일을 반복하고 있습니다. 올바른 방법입니까?배열의 기초 - 루프로 채우기

Dim ZipNameArray(?) 

Using zip As ZipFile = ZipFile.Read(ZipToUnpack) 
    For Each file In zip 
     ZipNameArray(?) = file .FileName 
    Next 
End Using 

(내에서 파일 수를 계산하려면) zip을 반복 할 때까지 배열 크기를 알 수 없습니다. 배열을 어떻게 증가시킬 수 있습니까? 파일이 숫자가 아닌가요?

답변

3

이 경우 generic List(of ZipFile)을 사용합니다. 그들은 더 안전하고 쉽게 읽을 수 있습니다.

Dim zips as new List(of ZipFile) 

Using zip As ZipFile = ZipFile.Read(ZipToUnpack) 
     For Each file In zip 
      zips.add(file) 
     Next 
End Using 

그리고 당신을 통해 반복 할 때 당신이 닷넷의 배열을 잊을 수

For each zip as ZipFile in zips 
    dim fileName as string=zip.FileName 
Next 

퍼센트 99에서 당신이 하나를 필요로 할 때 당신이 돈 때문에 당신이 List.ToArray

1

ArrayList 객체를 사용하여 항목을 추가 한 다음 끝에 .ToArray()를 호출하여 ZipEntry 객체의 배열을 가져올 수 있습니다.

0

으로 그것을 얻을 ' 배열 크기를 알면 두 가지 옵션이 있습니다. Zip 파일을 두 번 통과 할 수 있습니다. 처음에는 파일 수를 계산 한 다음 배열을 만든 다음 두 번째로 이동하여 각 파일의 이름을 추가합니다. 우편 파일이 예를 들어

그것을 보내고 당신은 항상 (말 10)을 일부 상수로 배열을 초기화 할 수 있고 당신이 열한번째 파일 이름에 도달 할 때 "ReDim을"하여 배열을 성장 너무 큰 경우

:

Dim Names(10) as String 
Dim counter as Integer 
counter = 0 
Go through zip { 
    counter += 1 
    if counter = size of Names then 
     ReDim Preserve Names(size of Names + 10) 
    add fileName 
} 

배열 (redim 포함)에 대한 추가 정보는 here입니다.

0
Dim zipNameArray As String() 
Using zip As ZipFile = ZipFile.Read(ZipToUnpack) 
    zipNameArray = zip.Select(Function(file) file.FileName).ToArray() 
End Using