�@

.NET TIPS

GZIP�`���Ńt�@�C�������k�^�𓀂���ɂ́H�m2.0�̂݁AC#�AVB�n

�f�W�^���A�h�o���e�[�W�@���� �F�M
2006/08/11

�@.NET Framework 2.0�ɂ́A�X�g���[����GZIP�`���ň��k�^��*���邽�߂�GZipStream�N���X�iSystem.IO.Compression���O��ԁj���V�����lj�����Ă���BGZIP�`����UNIX��Linux�ň�ʓI�Ɏg�p����Ă��鈳�k�c�[���ł���ugzip�R�}���h�v�ŗp�����Ă��鈳�k�����ł���B

* �w���v�ł�decompress���u���k�����v�Ɩ󂵂Ă��邪�A�{�e�ł͂��L���g���Ă�����ł���u�𓀁v��p����B

�@�{�e�ł͂���GZipStream�N���X��p���ăt�@�C�������k�^�𓀂�����@�ɂ‚��ĉ������B

�@�Ȃ��AGZipStream�N���X�͂����܂ł��X�g���[�������k�^�𓀂��邽�߂̃N���X�ł���A�����̃t�@�C����1�‚̃t�@�C���Ɉ��k����Ȃǂ̋@�\�͎����Ă��Ȃ��i������������邽�߂ɂ͕����̃t�@�C����1�‚̃t�@�C���ɂ܂Ƃ߂鏈���������Ŏ�������K�v������j�B

GZipStream�N���X�̃R���X�g���N�^

�@GZipStream�N���X�ł́A�R���X�g���N�^�̃p�����[�^�ɂĈ��k���s�����𓀂��s�������܂��w�肷��B���k���s���ꍇ�ɂ͎��̂悤�ɂ��ăR���X�g���N�^���Ăяo���B��2�p�����[�^�ɂ�CompressionMode�񋓑́iSystem.IO.Compression���O��ԁj�̒l���w�肷��B

GZipStream compStream = new GZipStream(
    ���o�͐�X�g���[����, CompressionMode.Compress)

�@���̂悤�ɂ��č쐬����GZipStream�I�u�W�F�N�g�ł́AWrite���\�b�h��WriteByte���\�b�h�ɂ��A�w�肵���o�b�t�@���̃f�[�^�����k���ā��o�͐�X�g���[�����ɏ������ނ��Ƃ��ł���B

�@����A�𓀂��s���ꍇ�ɂ̓R���X�g���N�^�̌Ăяo���͎��̂悤�ɂȂ�B

GZipStream decompStream = new GZipStream(
    �����͌��X�g���[����, CompressionMode.Decompress)

�@���̏ꍇ�ɂ́ARead���\�b�h��ReadByte���\�b�h�ɂ��A�����͌��X�g���[��������ǂݍ��񂾃f�[�^���𓀂��A�w�肵���o�b�t�@�ɏo�͂ł���B

�t�@�C�������k����T���v���E�v���O����

�@���Ɏ����T���v���E�v���O�����́A���s���Ɏw�肳�ꂽ�t�@�C�������k���A���k�t�@�C���ł���u�t�@�C����.gz�v���쐬����B

�@���̃v���O�����ł́A�t�@�C���E�X�g���[������ǂݍ��񂾃f�[�^�����k�X�g���[���iGZipStream�I�u�W�F�N�g�j�ɏ�������ł���B���k�X�g���[���̏o�͐�ɂ́A�o�̓t�@�C���p�̃t�@�C���E�X�g���[�����R���X�g���N�^�ŃZ�b�g���Ă���B

// gzcomp.cs

using System;
using System.IO;
using System.IO.Compression;

public class CompressSample {
  static void Main(string[] args) {

    string inFile = args[0];

    // �o�̓t�@�C���̊g���q�́u.gz�v
    string outFile = Path.GetFileName(inFile) + ".gz";

    int num;
    byte[] buf = new byte[1024]; // 1Kbytes����������

    FileStream inStream // ���̓X�g���[��
      = new FileStream(inFile, FileMode.Open, FileAccess.Read);

    FileStream outStream // �o�̓X�g���[��
      = new FileStream(outFile, FileMode.Create);

    GZipStream compStream // ���k�X�g���[��
      = new GZipStream(
        outStream,  // �o�͐�ƂȂ�X�g���[�����w��
        CompressionMode.Compress); // ���k���w��

    using (inStream)
    using (outStream)
    using (compStream) {
      while ((num = inStream.Read(buf, 0, buf.Length)) > 0) {
        compStream.Write(buf, 0, num);
      }
    }
  }
}

// �R���p�C�����@�Fcsc gzcomp.cs
// �g�p���@�Fgzcomp �����k�������t�@�C����
GZIP�`���Ńt�@�C���̈��k���s��C#�̃T���v���E�v���O�����igzcomp.cs�j

' gzcomp.vb

Imports System
Imports System.IO
Imports System.IO.Compression

Public Class CompressSample
  Shared Sub Main(ByVal args As String())

    Dim inFile As String = args(0)

    ' �o�̓t�@�C���̊g���q�́u.gz�v
    Dim outFile As String = Path.GetFileName(inFile) + ".gz"

    Dim num As Integer
    Dim buf(1024) As Byte ' 1Kbytes����������

    ' ���̓X�g���[��
    Dim inStream As New FileStream _
       (inFile, FileMode.Open, FileAccess.Read)

    ' �o�̓X�g���[��
    Dim outStream As New FileStream _
      (outFile, FileMode.Create)

    ' ���k�X�g���[��
    Dim compStream As New GZipStream _
      (outStream, CompressionMode.Compress)

    Using inStream
    Using outStream
    Using compStream
      Do
        num = inStream.Read(buf, 0, buf.Length)
        If num <= 0 Then Exit Do
        compStream.Write(buf, 0, num)
      Loop
    End Using
    End Using
    End Using
  End Sub
End Class

' �R���p�C�����@�Fvbc gzcomp.vb
' �g�p���@�Fgzcomp �����k�������t�@�C����
GZIP�`���Ńt�@�C���̈��k���s��VB�̃T���v���E�v���O�����igzcomp.vb�j

�@�v���O�����ł́A�쐬���Ă���3�‚̃X�g���[���ɑ΂���using�X�e�[�g�����g���g�p���邱�Ƃɂ��A�m���ȃ��\�[�X�̉���iDispose���\�b�h�̌Ăяo���j���s���Ă���B

�t�@�C�����𓀂���T���v���E�v���O����

�@�����Ă�GZIP�`���ň��k���ꂽ�t�@�C���̉𓀂��s���T���v���E�v���O�����������B���̃v���O�����́A���s���Ɏw�肳�ꂽ���k�t�@�C���i.gz�t�@�C���j�����̃t�@�C���ɉ𓀂���B�𓀂ɂ��쐬�����t�@�C���̖��O�́A�P���ɓ��̓t�@�C��������u.gz�v����������̂ƂȂ�i���̂悤�ȃt�@�C�������łɑ��݂��Ă��Ă��㏑������j�B

�@���̃v���O�����ł́A���͌��ƂȂ�t�@�C���E�X�g���[�����Z�b�g�����𓀃X�g���[���iGZipStream�I�u�W�F�N�g�j����f�[�^��ǂݏo���A������o�̓t�@�C���p�̃t�@�C���E�X�g���[���ɏ�������ł���B

// gzdecomp.cs

using System;
using System.IO;
using System.IO.Compression;

public class DecompressSample {
  static void Main(string[] args) {

    string inFile = args[0];

    // ���̓t�@�C����.gz�t�@�C���̂ݗL��
    if (!inFile.ToLower().EndsWith(".gz")) {
      return;
    }

    // �t�@�C���������́u.gz�v���폜
    string outFile = inFile.Substring(0, inFile.Length - 3);

    int num;
    byte[] buf = new byte[1024]; // 1Kbytes����������

    FileStream inStream // ���̓X�g���[��
      = new FileStream(inFile, FileMode.Open, FileAccess.Read);

    GZipStream decompStream // �𓀃X�g���[��
      = new GZipStream(
        inStream, // ���͌��ƂȂ�X�g���[�����w��
        CompressionMode.Decompress); // �𓀁i���k�����j���w��

    FileStream outStream // �o�̓X�g���[��
      = new FileStream(outFile, FileMode.Create);

    using (inStream)
    using (outStream)
    using (decompStream) {
      while ((num = decompStream.Read(buf, 0, buf.Length)) > 0) {
        outStream.Write(buf, 0, num);
      }
    }
  }
}

// �R���p�C�����@�Fcsc gzdecomp.cs
// �g�p���@�Fgzdecomp ���𓀂�����.gz�t�@�C����
GZIP�`���t�@�C���̉𓀂��s��C#�̃T���v���E�v���O�����igzdecomp.cs�j

' gzdecomp.vb

Imports System
Imports System.IO
Imports System.IO.Compression

Public Class DecompressSample
  Shared Sub Main(ByVal args As String())

    Dim inFile As String = args(0)

    ' ���̓t�@�C����.gz�t�@�C���̂ݗL��
    If Not inFile.ToLower().EndsWith(".gz")
      Return
    End If

    ' �t�@�C���������́u.gz�v���폜
    Dim outFile As String = inFile.Substring(0, inFile.Length - 3)

    Dim num As Integer
    Dim buf(1024) As Byte ' 1Kbytes����������

    ' ���̓X�g���[��
    Dim inStream As New FileStream _
       (inFile, FileMode.Open, FileAccess.Read)

    ' �𓀃X�g���[��
    Dim decompStream As New GZipStream _
      (inStream, CompressionMode.Decompress)

    ' �o�̓X�g���[��
    Dim outStream As New FileStream _
      (outFile, FileMode.Create)

    Using inStream
    Using outStream
    Using decompStream
      Do
        num = decompStream.Read(buf, 0, buf.Length)
        If num <= 0 Then Exit Do
        outStream.Write(buf, 0, num)
      Loop
    End Using
    End Using
    End Using
  End Sub
End Class

' �R���p�C�����@�Fvbc gzdecomp.vb
' �g�p���@�Fgzdecomp ���𓀂�����.gz�t�@�C����
GZIP�`���t�@�C���̉𓀂��s��VB�̃T���v���E�v���O�����igzdecomp.vb�j

���k��̃t�@�C���E�T�C�Y

�@�Q�l�܂łɁA�e�L�X�g�E�t�@�C���i��L�T���v���E�v���O������gzcomp.cs�j�ƃo�C�i���E�t�@�C���igzcomp.cs���R���p�C�����č쐬����gzcomp.exe�j���A��L�T���v���E�v���O��������сA�ق��̂����‚��̈��k�����ň��k�����Ƃ��̃t�@�C���E�T�C�Y�������BZIP�`�������RAR�`���ł̈��k�ɂ‚��Ă�WinRAR��p���Ă���B

���k���� ���k��̃T�C�Y�ibytes�j ���k���i���j
�i�����k�j 960 -
GZIP�i�{�e�̃T���v���E�v���O�����j 668 70
ZIP�i���k���@�F�W���j 636 66
RAR�i���k���@�F�W���j 616 64
RAR�i���k���@�F�ō��j 536 56
�e�L�X�g�E�t�@�C���igzcomp.cs�j�̈��k����

���k���� ���k��̃T�C�Y�ibytes�j ���k���i���j
�i�����k�j 3584 -
GZIP�i�{�e�̃T���v���E�v���O�����j 1767 49
ZIP�i���k���@�F�W���j 1437 40
RAR�i���k���@�F�W���j 1409 39
RAR�i���k���@�F�ō��j 1311 37
�o�C�i���E�t�@�C���igzcomp.exe�j�̈��k����

�@�����̌��ʂ����������悤�ɁAGZIP�`���͂ق��̈�ʓI�Ȉ��k�����Ɣ�ׂ�Ƃ���قLj��k���͍����Ȃ��BEnd of Article

���p�”\�o�[�W�����F.NET Framework 2.0�̂�
�J�e�S���F�N���X�E���C�u�����@�����ΏہF�f�B���N�g�����t�@�C��
�g�p���C�u�����FGZipStream�N���X�iSystem.IO.Compression���O��ԁj
�g�p���C�u�����FCompressionMode�񋓑́iSystem.IO.Compression���O��ԁj

���̋L���Ɗ֘A���̍����ʂ�.NET TIPS
HTTP���k���g�p����Web�y�[�W���擾����ɂ́H
�mASP.NET�n���I�Ɉ��k�t�@�C���𐶐�����ɂ́H
���̃��X�g�́A�i���j�f�W�^���A�h�o���e�[�W���J������
�����֘A�L���T���V�X�e�� Jigsaw�i�W�O�\�[�j �ɂ�莩�����o�������̂ł��B
generated by

�u.NET TIPS�v


Insider.NET �t�H�[���� �V���L��
  • ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
    �@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���
  • ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
    �@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤
  • ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
    �@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J���֐��v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg����
  • Presentation Translator �i2017/7/18�j
    �@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Insider.NET �L�������L���O

�{�� ����