【chatGPT使用】要件:ファイルをZip形式で格納する方法

仕事内容

今流行のchatGPTを使用して、PHP、C#、Javaの3言語のパターンで

「ファイルをZip形式で格納する」ためのプログラミングコードを作成してみました。

3言語は私が実際によく使用している言語のため、備忘録も兼ねて選びました。

今回の要件は、PHPを使った案件で散々苦労した内容だったので、chatGPTではどのくらいの速度でプログラミング可能なのか試してみたく、実験してみました。

独自に作られる訳ではないため、手直しが必要ではありますが、かなり正確にプログラミングしてくれるので、ベースとして使用するには良いツールだと思います。

PHPでファイルをZip形式で格納する方法

質問:PHPでファイルをZIPで格納するプログラミング方法

回答:PHPでファイルをZIPで圧縮するには、Zipアーカイブを作成するためにPHPのZipArchiveクラスを使用することができます。以下は、ZipArchiveを使用してファイルをZIPに格納する簡単な例です。

回答時間:約3分

// ZIPアーカイブを作成するためにZipArchiveオブジェクトをインスタンス化する
$zip = new ZipArchive();
$filename = “./example.zip”;

// 新しいZipアーカイブを作成し、ファイルを追加する
if ($zip->open($filename, ZipArchive::CREATE) === TRUE) {
// ファイルパスの配列を指定して追加する
$files = array(‘file1.txt’, ‘file2.txt’, ‘file3.txt’);
foreach ($files as $file) {
$zip->addFile($file);
}
// Zipアーカイブを閉じる
$zip->close();
echo “Zipアーカイブを作成しました”;
} else {
echo “Zipアーカイブの作成に失敗しました”;
}

$filename、$filesを独自の仕様に変更すればすぐに引用できそうです。

C#でファイルをZip形式で格納する方法

質問:C#でファイルをZIPで格納するプログラミング方法

回答:C#でファイルをZIPで圧縮するには、System.IO.Compression.ZipArchiveクラスを使用する方法があります。以下は、単一のファイルをZIPファイルに圧縮する例です。

回答時間:約3分

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

// 圧縮するファイルのパスと名前
string sourceFilePath = @”C:\example\file.txt”;
// 圧縮後のZIPファイルのパスと名前
string zipFilePath = @”C:\example\file.zip”;

// ZIPファイルを作成して、ファイルを追加する
using (var archive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
{
archive.CreateEntryFromFile(sourceFilePath, Path.GetFileName(sourceFilePath));
}

ZipFile.OpenメソッドでZIPファイルを作成し、ZipArchiveクラスのCreateEntryFromFileメソッドを使用して、ファイルをZIPアーカイブに追加しています。

複数のファイルをZIPファイルに圧縮する例も聞いてみました。

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

string zipPath = @”C:\example\example.zip”;
string[] filesToZip = new string[] { @”C:\example\file1.txt”, @”C:\example\file2.txt”, @”C:\example\file3.txt” };

// ZIPファイルを作成する
using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Create))
{
foreach (string file in filesToZip)
{
// ZIPファイルに追加するファイルを開く
FileInfo fileInfo = new FileInfo(file);
ZipArchiveEntry entry = archive.CreateEntry(fileInfo.Name);

// ファイルをZIPファイルに書き込む using (FileStream stream = fileInfo.OpenRead()) using (Stream zipStream = entry.Open()) { stream.CopyTo(zipStream);

}

}

}

上記の例では、zipPathで指定されたパスにZIPファイルを作成し、filesToZipで指定された複数のファイルをZIPファイルに追加しています。foreachループを使用して、ファイルを1つずつ処理していますね。

JavaでファイルをZip形式で格納する方法

質問:JavaでファイルをZIPで格納するプログラミング方法

回答:JavaでファイルをZIP形式で圧縮するには、java.util.zipパッケージのZipOutputStreamクラスを使用します。以下は、ファイルをZIPアーカイブに格納する基本的な例です。

回答時間:約4分

import java.io.; import java.util.zip.;

public class ZipFileExample {
public static void main(String[] args) {
String sourceFile = “path/to/source/file.txt”;
String zipFile = “path/to/output/file.zip”;

    try {
        // Create a FileOutputStream to write the ZIP file
        FileOutputStream fos = new FileOutputStream(zipFile);

        // Create a ZipOutputStream to write the ZIP file
        ZipOutputStream zipOut = new ZipOutputStream(fos);

        // Create a FileInputStream to read the source file
        FileInputStream fis = new FileInputStream(sourceFile);

        // Create a ZipEntry representing the source file
        ZipEntry zipEntry = new ZipEntry(sourceFile);

        // Add the ZipEntry to the ZipOutputStream
        zipOut.putNextEntry(zipEntry);

        // Write the contents of the source file to the ZipOutputStream
        byte[] bytes = new byte[1024];
        int length;
        while ((length = fis.read(bytes)) >= 0) {
            zipOut.write(bytes, 0, length);
        }

        // Close the ZipEntry and FileInputStream
        zipOut.closeEntry();
        fis.close();

        // Close the ZipOutputStream
        zipOut.close();

        System.out.println("File successfully compressed to " + zipFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Javaの場合もしっかり基本的な構文で組み立てられていて、作成内容によっては少しの修正で要件に沿ったものが作成できそうです。

感想

始めて「chatGPT」を使用してプログラミングの問い合わせをしてみましたが、

今まで悩んでいた時間は一体なんだったのか…。と思うほどのスピードで求めていた回答を弾き出してくれます。

teratailで情報収集したり、海外サイトを漁って似たようなソースコードを引っ張ってくるよりも、私的にはかなり効率が良いと感じました。

今後、業務の中で、「こういう機能を作りたいときどうすれば良いんだ…」と悩んだ時は時短のためにも積極的に使っていきたいツールだと感じました!

コメント

タイトルとURLをコピーしました