我正在遍历一个zip文件,试图在其中添加每个文件的文件名。 这是正确的方法吗?
Dim ZipNameArray(?)
Using zip As ZipFile = ZipFile.Read(ZipToUnpack)
For Each file In zip
ZipNameArray(?) = file .FileName
Next
End Using
在我开始循环访问zip之前我不知道数组大小(计算出其中的文件数)。 如何增加数组?文件不是数字? (这是一个ZipEntry)
答案 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