DeflateStream 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
DeflateStream 클래스의 새 인스턴스를 초기화합니다.
오버로드
DeflateStream(Stream, CompressionLevel) |
지정된 스트림과 압축 수준을 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화합니다. |
DeflateStream(Stream, CompressionMode) |
지정된 스트림과 압축 모드를 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화합니다. |
DeflateStream(Stream, CompressionLevel, Boolean) |
지정된 스트림과 압축 수준을 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화하고 스트림을 선택적으로 연 상태로 둘 수 있습니다. |
DeflateStream(Stream, CompressionMode, Boolean) |
지정된 스트림과 압축 모드를 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화하고 스트림을 선택적으로 연 상태로 둘 수 있습니다. |
설명
클래스를 DeflateStream 사용하여 4GB보다 큰 파일을 압축하면 예외가 발생합니다.
DeflateStream(Stream, CompressionLevel)
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
지정된 스트림과 압축 수준을 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화합니다.
public:
DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionLevel compressionLevel);
public DeflateStream (System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionLevel -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, compressionLevel As CompressionLevel)
매개 변수
- stream
- Stream
압축된 데이터가 기록되는 스트림입니다.
- compressionLevel
- CompressionLevel
데이터를 스트림으로 압축할 때 속도 또는 압축 효율성을 강조할지 여부를 나타내는 열거형 값 중 하나입니다.
예외
stream
이(가) null
인 경우
스트림이 압축 등의 쓰기 작업을 지원하지 않습니다. (스트림 개체의 CanWrite 속성이 false
입니다.)
설명
클래스의 instance DeflateStream 압축 효율성 또는 속도가 더 중요한지 여부를 지정하려는 경우 이 생성자를 사용합니다.
이 생성자 오버로드는 압축 모드 Compress를 사용합니다. 압축 모드를 다른 값으로 설정하려면 또는 DeflateStream(Stream, CompressionMode, Boolean) 오버로드를 DeflateStream(Stream, CompressionMode) 사용합니다.
예제
다음 예제에서는 개체를 만들 때 압축 수준을 설정하는 방법과 스트림을 DeflateStream 열어 두는 방법을 보여줍니다.
using System;
using System.IO;
using System.IO.Compression;
public static class FileCompressionLevelExample
{
private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
private const string OriginalFileName = "original.txt";
private const string CompressedFileName = "compressed.dfl";
public static void Run()
{
CreateFileToCompress();
CompressFile();
PrintResults();
DeleteFiles();
/*
Output:
The original file 'original.txt' is 445 bytes.
The compressed file 'compressed.dfl' is 259 bytes.
*/
}
private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);
private static void CompressFile()
{
using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
using FileStream compressedFileStream = File.Create(CompressedFileName);
using var compressor = new DeflateStream(compressedFileStream, CompressionLevel.Fastest);
originalFileStream.CopyTo(compressor);
}
private static void PrintResults()
{
long originalSize = new FileInfo(OriginalFileName).Length;
long compressedSize = new FileInfo(CompressedFileName).Length;
Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes.");
Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
}
private static void DeleteFiles()
{
File.Delete(OriginalFileName);
File.Delete(CompressedFileName);
}
}
Imports System.IO
Imports System.IO.Compression
Module FileCompressionLevelExample
Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Private Const OriginalFileName As String = "original.txt"
Private Const CompressedFileName As String = "compressed.dfl"
Sub Main()
CreateFileToCompress()
CompressFile()
PrintResults()
DeleteFiles()
'Output:
' The original file 'original.txt' weighs 445 bytes.
' The compressed file 'compressed.dfl' weighs 259 bytes.
End Sub
Private Sub CreateFileToCompress()
File.WriteAllText(OriginalFileName, Message)
End Sub
Private Sub CompressFile()
Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
Using compressedFileStream As FileStream = File.Create(CompressedFileName)
Using compressor = New DeflateStream(compressedFileStream, CompressionLevel.Fastest)
originalFileStream.CopyTo(compressor)
End Using
End Using
End Using
End Sub
Private Sub PrintResults()
Dim originalSize As Long = New FileInfo(OriginalFileName).Length
Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes.")
Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
End Sub
Private Sub DeleteFiles()
File.Delete(OriginalFileName)
File.Delete(CompressedFileName)
End Sub
End Module
적용 대상
DeflateStream(Stream, CompressionMode)
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
지정된 스트림과 압축 모드를 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화합니다.
public:
DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionMode mode);
public DeflateStream (System.IO.Stream stream, System.IO.Compression.CompressionMode mode);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionMode -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, mode As CompressionMode)
매개 변수
- stream
- Stream
압축된 데이터가 기록되거나 압축 해제할 데이터를 읽는 스트림입니다.
- mode
- CompressionMode
스트림으로 데이터를 압축할지 아니면 스트림에서 데이터를 압축 해제할지를 나타내는 열거형 값 중 하나입니다.
예외
stream
은 null
입니다.
mode
는 유효한 CompressionMode 값이 아닙니다.
또는
CompressionMode가 Compress이고 CanWrite이 false
인 경우
또는
CompressionMode가 Decompress이고 CanRead이 false
인 경우
설명
기본적으로 는 DeflateStream 기본 스트림을 소유하므로 스트림을 닫으면 기본 스트림도 닫힙니다. 기본 스트림의 상태는 스트림의 유용성에 영향을 줄 수 있습니다. 또한 명시적 검사가 수행되지 않으므로 새 instance 만들 때 추가 예외가 throw되지 않습니다.
매개 변수가 와 같은 Compress
클래스의 DeflateStream instance 만들어 mode
지면 헤더 정보가 즉시 삽입됩니다. 추가 작업이 발생하지 않으면 스트림은 유효하고 비어 있는 압축 파일로 표시됩니다.
클래스를 DeflateStream 사용하여 4GB보다 큰 파일을 압축하면 예외가 발생합니다.
기본적으로 압축 수준은 압축 모드가 일 때 로 Optimal 설정됩니다 Compress.
예제
다음 예제에서는 사용 하는 방법에 설명 합니다 DeflateStream 압축 하 고 파일을 압축 해제 하는 클래스입니다.
using System;
using System.IO;
using System.IO.Compression;
public static class FileCompressionModeExample
{
private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
private const string OriginalFileName = "original.txt";
private const string CompressedFileName = "compressed.dfl";
private const string DecompressedFileName = "decompressed.txt";
public static void Run()
{
CreateFileToCompress();
CompressFile();
DecompressFile();
PrintResults();
DeleteFiles();
/*
Output:
The original file 'original.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
The compressed file 'compressed.dfl' is 265 bytes.
The decompressed file 'decompressed.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
*/
}
private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);
private static void CompressFile()
{
using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
using FileStream compressedFileStream = File.Create(CompressedFileName);
using var compressor = new DeflateStream(compressedFileStream, CompressionMode.Compress);
originalFileStream.CopyTo(compressor);
}
private static void DecompressFile()
{
using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open);
using FileStream outputFileStream = File.Create(DecompressedFileName);
using var decompressor = new DeflateStream(compressedFileStream, CompressionMode.Decompress);
decompressor.CopyTo(outputFileStream);
}
private static void PrintResults()
{
long originalSize = new FileInfo(OriginalFileName).Length;
long compressedSize = new FileInfo(CompressedFileName).Length;
long decompressedSize = new FileInfo(DecompressedFileName).Length;
Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\"");
Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
Console.WriteLine($"The decompressed file '{DecompressedFileName}' is {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\"");
}
private static void DeleteFiles()
{
File.Delete(OriginalFileName);
File.Delete(CompressedFileName);
File.Delete(DecompressedFileName);
}
}
Imports System.IO
Imports System.IO.Compression
Module FileCompressionModeExample
Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Private Const OriginalFileName As String = "original.txt"
Private Const CompressedFileName As String = "compressed.dfl"
Private Const DecompressedFileName As String = "decompressed.txt"
Sub Main()
CreateFileToCompress()
CompressFile()
DecompressFile()
PrintResults()
DeleteFiles()
'Output:
' The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
' The compressed file 'compressed.dfl' weighs 265 bytes.
' The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
End Sub
Private Sub CreateFileToCompress()
File.WriteAllText(OriginalFileName, Message)
End Sub
Private Sub CompressFile()
Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
Using compressedFileStream As FileStream = File.Create(CompressedFileName)
Using compressor = New DeflateStream(compressedFileStream, CompressionMode.Compress)
originalFileStream.CopyTo(compressor)
End Using
End Using
End Using
End Sub
Private Sub DecompressFile()
Using compressedFileStream As FileStream = File.Open(CompressedFileName, FileMode.Open)
Using outputFileStream As FileStream = File.Create(DecompressedFileName)
Using decompressor = New DeflateStream(compressedFileStream, CompressionMode.Decompress)
decompressor.CopyTo(outputFileStream)
End Using
End Using
End Using
End Sub
Private Sub PrintResults()
Dim originalSize As Long = New FileInfo(OriginalFileName).Length
Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
Dim decompressedSize As Long = New FileInfo(DecompressedFileName).Length
Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: ""{File.ReadAllText(OriginalFileName)}""")
Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: ""{File.ReadAllText(DecompressedFileName)}""")
End Sub
Private Sub DeleteFiles()
File.Delete(OriginalFileName)
File.Delete(CompressedFileName)
File.Delete(DecompressedFileName)
End Sub
End Module
적용 대상
DeflateStream(Stream, CompressionLevel, Boolean)
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
지정된 스트림과 압축 수준을 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화하고 스트림을 선택적으로 연 상태로 둘 수 있습니다.
public:
DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionLevel compressionLevel, bool leaveOpen);
public DeflateStream (System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel, bool leaveOpen);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionLevel * bool -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, compressionLevel As CompressionLevel, leaveOpen As Boolean)
매개 변수
- stream
- Stream
압축된 데이터가 기록되는 스트림입니다.
- compressionLevel
- CompressionLevel
데이터를 스트림으로 압축할 때 속도 또는 압축 효율성을 강조할지 여부를 나타내는 열거형 값 중 하나입니다.
- leaveOpen
- Boolean
DeflateStream 개체를 삭제한 후 스트림 개체를 열어 두려면 true
이고, 그렇지 않으면 false
입니다.
예외
stream
이(가) null
인 경우
스트림이 압축 등의 쓰기 작업을 지원하지 않습니다. (스트림 개체의 CanWrite 속성이 false
입니다.)
설명
클래스의 instance DeflateStream 압축 효율성 또는 속도가 더 중요한지 여부와 개체를 삭제 DeflateStream 한 후 스트림 개체를 열어 둘지 여부를 지정하려는 경우 이 생성자를 사용합니다.
이 생성자 오버로드는 압축 모드 Compress를 사용합니다. 압축 모드를 다른 값으로 설정하려면 또는 DeflateStream(Stream, CompressionMode, Boolean) 오버로드를 DeflateStream(Stream, CompressionMode) 사용합니다.
예제
다음 예제에서는 개체를 만들 때 압축 수준을 설정하는 방법과 스트림을 DeflateStream 열어 두는 방법을 보여줍니다.
using System;
using System.IO;
using System.IO.Compression;
public static class FileCompressionLevelExample
{
private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
private const string OriginalFileName = "original.txt";
private const string CompressedFileName = "compressed.dfl";
public static void Run()
{
CreateFileToCompress();
CompressFile();
PrintResults();
DeleteFiles();
/*
Output:
The original file 'original.txt' is 445 bytes.
The compressed file 'compressed.dfl' is 259 bytes.
*/
}
private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);
private static void CompressFile()
{
using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
using FileStream compressedFileStream = File.Create(CompressedFileName);
using var compressor = new DeflateStream(compressedFileStream, CompressionLevel.Fastest);
originalFileStream.CopyTo(compressor);
}
private static void PrintResults()
{
long originalSize = new FileInfo(OriginalFileName).Length;
long compressedSize = new FileInfo(CompressedFileName).Length;
Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes.");
Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
}
private static void DeleteFiles()
{
File.Delete(OriginalFileName);
File.Delete(CompressedFileName);
}
}
Imports System.IO
Imports System.IO.Compression
Module FileCompressionLevelExample
Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Private Const OriginalFileName As String = "original.txt"
Private Const CompressedFileName As String = "compressed.dfl"
Sub Main()
CreateFileToCompress()
CompressFile()
PrintResults()
DeleteFiles()
'Output:
' The original file 'original.txt' weighs 445 bytes.
' The compressed file 'compressed.dfl' weighs 259 bytes.
End Sub
Private Sub CreateFileToCompress()
File.WriteAllText(OriginalFileName, Message)
End Sub
Private Sub CompressFile()
Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
Using compressedFileStream As FileStream = File.Create(CompressedFileName)
Using compressor = New DeflateStream(compressedFileStream, CompressionLevel.Fastest)
originalFileStream.CopyTo(compressor)
End Using
End Using
End Using
End Sub
Private Sub PrintResults()
Dim originalSize As Long = New FileInfo(OriginalFileName).Length
Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes.")
Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
End Sub
Private Sub DeleteFiles()
File.Delete(OriginalFileName)
File.Delete(CompressedFileName)
End Sub
End Module
적용 대상
DeflateStream(Stream, CompressionMode, Boolean)
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
- Source:
- DeflateStream.cs
지정된 스트림과 압축 모드를 사용하여 DeflateStream 클래스의 새 인스턴스를 초기화하고 스트림을 선택적으로 연 상태로 둘 수 있습니다.
public:
DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionMode mode, bool leaveOpen);
public DeflateStream (System.IO.Stream stream, System.IO.Compression.CompressionMode mode, bool leaveOpen);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionMode * bool -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, mode As CompressionMode, leaveOpen As Boolean)
매개 변수
- stream
- Stream
압축된 데이터가 기록되거나 압축 해제할 데이터를 읽는 스트림입니다.
- mode
- CompressionMode
스트림으로 데이터를 압축할지 아니면 스트림에서 데이터를 압축 해제할지를 나타내는 열거형 값 중 하나입니다.
- leaveOpen
- Boolean
DeflateStream 개체를 삭제한 후 스트림을 열어 두려면 true
이고, 그렇지 않으면 false
입니다.
예외
stream
이(가) null
인 경우
mode
는 유효한 CompressionMode 값이 아닙니다.
또는
CompressionMode가 Compress이고 CanWrite이 false
인 경우
또는
CompressionMode가 Decompress이고 CanRead이 false
인 경우
설명
기본적으로 는 DeflateStream 기본 스트림을 소유하므로 스트림을 닫으면 기본 스트림도 닫힙니다. 기본 스트림의 상태는 스트림의 유용성에 영향을 줄 수 있습니다. 또한 명시적 검사가 수행되지 않으므로 새 instance 만들 때 추가 예외가 throw되지 않습니다.
매개 변수가 와 같은 Compress
클래스의 DeflateStream instance 만들어 mode
지면 헤더 정보가 즉시 삽입됩니다. 추가 작업이 발생하지 않으면 스트림은 유효하고 비어 있는 압축 파일로 표시됩니다.
클래스를 DeflateStream 사용하여 4GB보다 큰 파일을 압축하면 예외가 발생합니다.
기본적으로 압축 수준은 압축 모드가 일 때 로 Optimal 설정됩니다 Compress.
예제
다음 예제에서는 사용 하는 방법에 설명 합니다 DeflateStream 압축 하 고 파일을 압축 해제 하는 클래스입니다.
using System;
using System.IO;
using System.IO.Compression;
public static class FileCompressionModeExample
{
private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
private const string OriginalFileName = "original.txt";
private const string CompressedFileName = "compressed.dfl";
private const string DecompressedFileName = "decompressed.txt";
public static void Run()
{
CreateFileToCompress();
CompressFile();
DecompressFile();
PrintResults();
DeleteFiles();
/*
Output:
The original file 'original.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
The compressed file 'compressed.dfl' is 265 bytes.
The decompressed file 'decompressed.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
*/
}
private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);
private static void CompressFile()
{
using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
using FileStream compressedFileStream = File.Create(CompressedFileName);
using var compressor = new DeflateStream(compressedFileStream, CompressionMode.Compress);
originalFileStream.CopyTo(compressor);
}
private static void DecompressFile()
{
using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open);
using FileStream outputFileStream = File.Create(DecompressedFileName);
using var decompressor = new DeflateStream(compressedFileStream, CompressionMode.Decompress);
decompressor.CopyTo(outputFileStream);
}
private static void PrintResults()
{
long originalSize = new FileInfo(OriginalFileName).Length;
long compressedSize = new FileInfo(CompressedFileName).Length;
long decompressedSize = new FileInfo(DecompressedFileName).Length;
Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\"");
Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
Console.WriteLine($"The decompressed file '{DecompressedFileName}' is {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\"");
}
private static void DeleteFiles()
{
File.Delete(OriginalFileName);
File.Delete(CompressedFileName);
File.Delete(DecompressedFileName);
}
}
Imports System.IO
Imports System.IO.Compression
Module FileCompressionModeExample
Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Private Const OriginalFileName As String = "original.txt"
Private Const CompressedFileName As String = "compressed.dfl"
Private Const DecompressedFileName As String = "decompressed.txt"
Sub Main()
CreateFileToCompress()
CompressFile()
DecompressFile()
PrintResults()
DeleteFiles()
'Output:
' The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
' The compressed file 'compressed.dfl' weighs 265 bytes.
' The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
End Sub
Private Sub CreateFileToCompress()
File.WriteAllText(OriginalFileName, Message)
End Sub
Private Sub CompressFile()
Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
Using compressedFileStream As FileStream = File.Create(CompressedFileName)
Using compressor = New DeflateStream(compressedFileStream, CompressionMode.Compress)
originalFileStream.CopyTo(compressor)
End Using
End Using
End Using
End Sub
Private Sub DecompressFile()
Using compressedFileStream As FileStream = File.Open(CompressedFileName, FileMode.Open)
Using outputFileStream As FileStream = File.Create(DecompressedFileName)
Using decompressor = New DeflateStream(compressedFileStream, CompressionMode.Decompress)
decompressor.CopyTo(outputFileStream)
End Using
End Using
End Using
End Sub
Private Sub PrintResults()
Dim originalSize As Long = New FileInfo(OriginalFileName).Length
Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
Dim decompressedSize As Long = New FileInfo(DecompressedFileName).Length
Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: ""{File.ReadAllText(OriginalFileName)}""")
Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: ""{File.ReadAllText(DecompressedFileName)}""")
End Sub
Private Sub DeleteFiles()
File.Delete(OriginalFileName)
File.Delete(CompressedFileName)
File.Delete(DecompressedFileName)
End Sub
End Module
적용 대상
.NET