2010-06-17 116 views
0

我正在循环一个压缩文件,尝试添加其中每个文件的文件名。 这是正确的方法吗?数组基础知识 - 填充循环

Dim ZipNameArray(?) 

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

我不知道数组的大小,直到我开始通过zip循环(计算出内部文件的数量)。 如何增加数组?文件不是数字? (这是一个ZipEntry)

回答

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%你可以忘记在.NET数组,当你需要一个你List.ToArray

1

你可以使用一个ArrayList对象,将它添加到它,然后在最后调用.ToArray()来获得一个ZipEntry对象数组。

0

既然你不把它” t知道数组大小有两个选项。你可以通过Zip文件两次。第一次只计算文件数量,然后创建你的数组,然后再次通过添加每个文件的名称。

如果你的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