数组基础 - 用循环填充

时间:2010-06-17 17:19:42

标签: vb.net arrays

我正在遍历一个zip文件,试图在其中添加每个文件的文件名。 这是正确的方法吗?

Dim ZipNameArray(?)

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

在我开始循环访问zip之前我不知道数组大小(计算出其中的文件数)。 如何增加数组?文件不是数字? (这是一个ZipEntry)

4 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用ArrayList对象,向其添加项目,然后在末尾调用.ToArray()以获取ZipEntry对象数组。

答案 2 :(得分:0)

由于您不知道数组大小,因此有两个选项。您可以两次浏览Zip文件。第一次只计算文件数,然后创建你的数组,然后第二次再添加每个文件的名称。

如果您的zip文件太大,您可以随时将数组初始化为某个常数(例如10),当您到达第11个文件名时,可以通过“重新创建”来增加数组

例如:

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

答案 3 :(得分:0)

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