using System;
using System.IO ;
using System.IO .Packaging ;
namespace ZipSample
{
class Program
{
static void Main( string[ ] args)
{
AddFileToZip( "Output.zip" , @"C:\Windows\N otepad.exe" ) ;
}
private const long BUFFER_SIZE = 4096 ;
private static void AddFileToZip( string zipFilename, string fileToAdd)
{
using ( Package zip = System.IO .Packaging .Package .Open ( zipFilename, FileMode.OpenOrCreate ) )
{
string destFilename = ".\\ " + Path.GetFileName ( fileToAdd) ;
//Uri uri = PackUriHelper.CreatePartUri(new Uri("Notepad.exe", UriKind.Relative));
Uri uri = PackUriHelper.CreatePartUri ( new Uri( "記事本.exe" , UriKind.Relative ) ) ;
if ( zip.PartExists ( uri) )
{
zip.DeletePart ( uri) ;
}
PackagePart part = zip.CreatePart ( uri, "" , CompressionOption.Normal ) ;
using ( FileStream fileStream = new FileStream( fileToAdd, FileMode.Open , FileAccess.Read ) )
{
using ( Stream dest = part.GetStream ( ) )
{
CopyStream( fileStream, dest) ;
}
}
}
}
private static void CopyStream( System.IO .FileStream inputStream, System.IO .Stream outputStream)
{
long bufferSize = inputStream.Length < BUFFER_SIZE ? inputStream.Length : BUFFER_SIZE;
byte[ ] buffer = new byte[ bufferSize] ;
int bytesRead = 0 ;
long bytesWritten = 0 ;
while ( ( bytesRead = inputStream.Read ( buffer, 0 , buffer.Length ) ) != 0 )
{
outputStream.Write ( buffer, 0 , bytesRead) ;
bytesWritten += bytesRead;
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5JTy5QYWNrYWdpbmc7CgpuYW1lc3BhY2UgWmlwU2FtcGxlCnsKICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBBZGRGaWxlVG9aaXAoIk91dHB1dC56aXAiLCBAIkM6XFdpbmRvd3NcTm90ZXBhZC5leGUiKTsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgY29uc3QgbG9uZyBCVUZGRVJfU0laRSA9IDQwOTY7CgogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgQWRkRmlsZVRvWmlwKHN0cmluZyB6aXBGaWxlbmFtZSwgc3RyaW5nIGZpbGVUb0FkZCkKICAgICAgICB7CiAgICAgICAgICAgIHVzaW5nIChQYWNrYWdlIHppcCA9IFN5c3RlbS5JTy5QYWNrYWdpbmcuUGFja2FnZS5PcGVuKHppcEZpbGVuYW1lLCBGaWxlTW9kZS5PcGVuT3JDcmVhdGUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJpbmcgZGVzdEZpbGVuYW1lID0gIi5cXCIgKyBQYXRoLkdldEZpbGVOYW1lKGZpbGVUb0FkZCk7CiAgICAgICAgICAgICAgICAvL1VyaSB1cmkgPSBQYWNrVXJpSGVscGVyLkNyZWF0ZVBhcnRVcmkobmV3IFVyaSgiTm90ZXBhZC5leGUiLCBVcmlLaW5kLlJlbGF0aXZlKSk7IAogICAgICAgICAgICAgICAgVXJpIHVyaSA9IFBhY2tVcmlIZWxwZXIuQ3JlYXRlUGFydFVyaShuZXcgVXJpKCLoqJjkuovmnKwuZXhlIiwgVXJpS2luZC5SZWxhdGl2ZSkpOwoKICAgICAgICAgICAgICAgIGlmICh6aXAuUGFydEV4aXN0cyh1cmkpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHppcC5EZWxldGVQYXJ0KHVyaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBQYWNrYWdlUGFydCBwYXJ0ID0gemlwLkNyZWF0ZVBhcnQodXJpLCAiIiwgQ29tcHJlc3Npb25PcHRpb24uTm9ybWFsKTsKICAgICAgICAgICAgICAgIHVzaW5nIChGaWxlU3RyZWFtIGZpbGVTdHJlYW0gPSBuZXcgRmlsZVN0cmVhbShmaWxlVG9BZGQsIEZpbGVNb2RlLk9wZW4sIEZpbGVBY2Nlc3MuUmVhZCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdXNpbmcgKFN0cmVhbSBkZXN0ID0gcGFydC5HZXRTdHJlYW0oKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvcHlTdHJlYW0oZmlsZVN0cmVhbSwgZGVzdCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIENvcHlTdHJlYW0oU3lzdGVtLklPLkZpbGVTdHJlYW0gaW5wdXRTdHJlYW0sIFN5c3RlbS5JTy5TdHJlYW0gb3V0cHV0U3RyZWFtKQogICAgICAgIHsKICAgICAgICAgICAgbG9uZyBidWZmZXJTaXplID0gaW5wdXRTdHJlYW0uTGVuZ3RoIDwgQlVGRkVSX1NJWkUgPyBpbnB1dFN0cmVhbS5MZW5ndGggOiBCVUZGRVJfU0laRTsKICAgICAgICAgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlW2J1ZmZlclNpemVdOwogICAgICAgICAgICBpbnQgYnl0ZXNSZWFkID0gMDsKICAgICAgICAgICAgbG9uZyBieXRlc1dyaXR0ZW4gPSAwOwogICAgICAgICAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9IGlucHV0U3RyZWFtLlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKSkgIT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgb3V0cHV0U3RyZWFtLldyaXRlKGJ1ZmZlciwgMCwgYnl0ZXNSZWFkKTsKICAgICAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiArPSBieXRlc1JlYWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=
compilation info
prog.cs(3,17): error CS0234: The type or namespace name `Packaging' does not exist in the namespace `System.IO'. Are you missing an assembly reference?
Compilation failed: 1 error(s), 0 warnings
stdout