Предупреждающее сообщение «Подразделение на ноль» является одним из наиболее часто задаваемых вопросов среди новых разработчиков PHP. Эта ошибка не вызовет исключения, поэтому некоторые разработчики будут иногда подавлять предупреждение, добавляя оператор подавления ошибок @ перед выражением. Например:
$value = @(2 / 0);
Но, как и при любом предупреждении, наилучшим подходом было бы отслеживать причину предупреждения и разрешать его. Причина предупреждения будет происходить из любого экземпляра, где вы пытаетесь разделить на 0, переменную, равную 0, или переменную, которая не была назначена (поскольку NULL == 0), потому что результат будет «неопределенным».
Чтобы исправить это предупреждение, вы должны переписать свое выражение, чтобы проверить, что значение не равно 0, если оно есть, сделать что-то еще. Если значение равно нулю, вы не должны делиться или изменять значение на 1, а затем делить так, что деление приводит к эквиваленту того, что он разделен только дополнительной переменной.
if ( $var1 == 0 ) { // check if var1 equals zero
$var1 = 1; // var1 equaled zero so change var1 to equal one instead
$var3 = ($var2 / $var1); // divide var1/var2 ie. 1/1
} else {
$var3 = ($var2 / $var1); // if var1 does not equal zero, divide
}
Вопросы, относящиеся:
DotNetZip - управление zip-файлом на языках.NET
DotNetZip является небольшой, простой в использовании библиотекой классов для управления .zip файлы. Это может позволить приложениям.NET, записанным в VB.NET, C#, любом языке.NET, легко создать, читать, и zip-файлы обновления.
пример кода для чтения zip:
using (var zip = ZipFile.Read(PathToZipFolder))
{
int totalEntries = zip.Entries.Count;
foreach (ZipEntry e in zip.Entries)
{
e.FileName ...
e.CompressedSize ...
e.LastModified...
}
}
Зарегистрируйтесь SharpZipLib
ZipInputStream inStream = new ZipInputStream(File.OpenRead(fileName));
while (inStream.GetNextEntry())
{
ZipEntry entry = inStream.GetNextEntry();
//write out your entry's filename
}
Если Вы используете.Net Платформу 3.0 или позже, проверяете Система. Пространство имен IO.Packaging. Это удалит Вашу зависимость от внешней библиотеки.
Конкретно проверяют Класс .
ZipPackageIck - что код с помощью времени выполнения J# отвратителен! И я не соглашаюсь, что это - лучший способ - J# вне поддержки теперь. И это - ОГРОМНОЕ время выполнения, если все, что Вы хотите, является поддержкой ZIP.
Как насчет этого - это использует DotNetZip (Бесплатная, Общедоступная MS лицензия)
using (ZipFile zip = ZipFile.Read(zipfile) )
{
bool header = true;
foreach (ZipEntry e in zip)
{
if (header)
{
System.Console.WriteLine("Zipfile: {0}", zip.Name);
if ((zip.Comment != null) && (zip.Comment != ""))
System.Console.WriteLine("Comment: {0}", zip.Comment);
System.Console.WriteLine("\n{1,-22} {2,9} {3,5} {4,9} {5,3} {6,8} {0}",
"Filename", "Modified", "Size", "Ratio", "Packed", "pw?", "CRC");
System.Console.WriteLine(new System.String('-', 80));
header = false;
}
System.Console.WriteLine("{1,-22} {2,9} {3,5:F0}% {4,9} {5,3} {6:X8} {0}",
e.FileName,
e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"),
e.UncompressedSize,
e.CompressionRatio,
e.CompressedSize,
(e.UsesEncryption) ? "Y" : "N",
e.Crc32);
if ((e.Comment != null) && (e.Comment != ""))
System.Console.WriteLine(" Comment: {0}", e.Comment);
}
}
Я являюсь относительно новым здесь поэтому, возможно, я не понимаю то, что продолжается.:-) в настоящее время существует 4 ответа на этом потоке, где два лучших ответа были провалены. (Pearcewg и cxfx's) статья, на которую указывает pearcewg, важна, потому что это разъясняет некоторые проблемы лицензирования с SharpZipLib. Мы недавно оценили несколько.Net библиотек сжатия и нашли, что DotNetZip в настоящее время является лучшим aleternative.
Очень краткое изложение:
Система. IO.Packaging значительно медленнее, чем DotNetZip.
SharpZipLib является GPL - см. статью.
Так для начинающих, я проголосовал за те два ответа.
Kim.
Лучший способ состоит в том, чтобы использовать.NET, созданную в функциональности zip J#, как показано в MSDN: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx . В этой ссылке существует полный рабочий пример чтения приложения и записи в zip-файлы. Для конкретного примера списка содержания zip-файла (в этом случае Silverlight .xap пакет приложений), код мог быть похожим на это:
ZipFile package = new ZipFile(packagePath);
java.util.Enumeration entries = package.entries();
//We have to use Java enumerators because we
//use java.util.zip for reading the .zip files
while ( entries.hasMoreElements() )
{
ZipEntry entry = (ZipEntry) entries.nextElement();
if (!entry.isDirectory())
{
string name = entry.getName();
Console.WriteLine("File: " + name + ", size: " + entry.getSize() + ", compressed size: " + entry.getCompressedSize());
}
else
{
// Handle directories...
}
}
у Aydsman был правильный указатель, но существует проблемы . А именно, Вы могли бы найти проблемы вводными zip-файлами, но являетесь допустимым решением, если Вы предназначаете к [только 117] создают pacakges. ZipPackage реализует абстрактный класс Пакета и позволяет управление zip-файлами. Существует образец того, как сделать это в MSDN: http://msdn.microsoft.com/en-us/library/ms771414.aspx . Примерно код был бы похож на это:
string packageRelationshipType = @"http://schemas.microsoft.com/opc/2006/sample/document";
string resourceRelationshipType = @"http://schemas.microsoft.com/opc/2006/sample/required-resource";
// Open the Package.
// ('using' statement insures that 'package' is
// closed and disposed when it goes out of scope.)
foreach (string packagePath in downloadedFiles)
{
Logger.Warning("Analyzing " + packagePath);
using (Package package = Package.Open(packagePath, FileMode.Open, FileAccess.Read))
{
Logger.OutPut("package opened");
PackagePart documentPart = null;
PackagePart resourcePart = null;
// Get the Package Relationships and look for
// the Document part based on the RelationshipType
Uri uriDocumentTarget = null;
foreach (PackageRelationship relationship in
package.GetRelationshipsByType(packageRelationshipType))
{
// Resolve the Relationship Target Uri
// so the Document Part can be retrieved.
uriDocumentTarget = PackUriHelper.ResolvePartUri(
new Uri("/", UriKind.Relative), relationship.TargetUri);
// Open the Document Part, write the contents to a file.
documentPart = package.GetPart(uriDocumentTarget);
//ExtractPart(documentPart, targetDirectory);
string stringPart = documentPart.Uri.ToString().TrimStart('/');
Logger.OutPut(" Got: " + stringPart);
}
// Get the Document part's Relationships,
// and look for required resources.
Uri uriResourceTarget = null;
foreach (PackageRelationship relationship in
documentPart.GetRelationshipsByType(
resourceRelationshipType))
{
// Resolve the Relationship Target Uri
// so the Resource Part can be retrieved.
uriResourceTarget = PackUriHelper.ResolvePartUri(
documentPart.Uri, relationship.TargetUri);
// Open the Resource Part and write the contents to a file.
resourcePart = package.GetPart(uriResourceTarget);
//ExtractPart(resourcePart, targetDirectory);
string stringPart = resourcePart.Uri.ToString().TrimStart('/');
Logger.OutPut(" Got: " + stringPart);
}
}
}
лучший способ, кажется, использует J#, как показано в MSDN: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx
существуют указатели на большее количество c# .zip библиотеки с различными лицензиями, как SharpNetZip и DotNetZip в этой статье: , как считать файлы из несжатой zip в c#? . Они могли бы быть неподходящими из-за лицензионных требований.