如何获取字节数组中包含的文件数
本文关键字:数组 包含 文件 字节数 字节 何获取 获取 | 更新日期: 2023-09-27 18:06:17
我使用ICSharpCode.SharpZipLib.Core
库来压缩我的c#代码中的文件。压缩后,我将返回一个字节数组。有什么方法可以找到字节数组中的文件数吗?
string FilePath ="C:'HELLO";
MemoryStream outputMemStream = new MemoryStream();
ZipOutputStream zipStream = new ZipOutputStream(outputMemStream);
foreach (var file in files)
{
FileInfo fi = new FileInfo(string.Concat(FilePath, file));
if (fi.Exists)
{
var entryName = ZipEntry.CleanName(fi.Name);
ZipEntry newEntry = new ZipEntry(entryName);
newEntry.DateTime = DateTime.Now;
newEntry.Size = fi.Length;
zipStream.PutNextEntry(newEntry);
byte[] buffer = new byte[4096];
var fs = File.OpenRead(string.Concat(FilePath, file));
var count = fs.Read(buffer, 0, buffer.Length);
while (count > 0)
{
zipStream.Write(buffer, 0, count);
count = fs.Read(buffer, 0, buffer.Length);
}
}
}
zipStream.Close();
byte[] byteArrayOut = outputMemStream.ToArray();
return byteArrayOut;
字节数组就是字节序列。仅仅通过查看字节数组来了解"文件的数量"是不可能的。你需要解压缩字节数组。
但是,当您在压缩时循环遍历一组文件时,很容易为每个处理过的文件增加一个变量,并返回该变量。
考虑到注释,使用out
参数可能比使用Tuple
numFiles = 0; // This is an out parameter to the method
foreach (var file in files)
{
FileInfo fi = new FileInfo(string.Concat(FilePath, file));
if (fi.Exists)
{
numFiles++;
...
}
}
...
return byteArrayOut;
你可以用2个属性返回你的对象:压缩字节数组和文件数量。另外,使用string。Format(或Path.Combine)而不是string。Concat
http://msdn.microsoft.com/en-us/library/system.io.directory.getfiles(v=vs.80).aspx
使用var filesCount = 0;
退出方法
和
filesCount = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length
之前zip