1

私のアプリは、各入札番号に 1 つ以上の PDF ファイルが添付された入札書類システムです。

アプリケーションは、struts と mysql を使用して Java ee で実行されます。

データベーステーブルでは、入札番号に関連する各pdfファイルのパスが保存されます。

すべての pdf ファイルを取得し、入札番号ごとに 1 つの ZIP ファイルを作成して、ユーザーがその zip ファイルをダウンロードし、すべての関連ドキュメントを 1 回のクリックで入手できるようにしたいと考えています。

Google を試してみたところ、何かが見つかりましZipOutputStreamたが、アプリケーションでこれを使用する方法がわかりません。

4

2 に答える 2

2

もう少しで完成です... これは使い方の小さな例ですZipOutputStream... pdf ファイル パス (および関連情報) を含むデータベース レコードを返す JAVA ヘルパー H があると仮定しましょう:

FileOutputStream zipFile = new FileOutputStream(new File("xxx.zip"));
ZipOutputStream output   = new ZipOutputStream(zipFile);

for (Record r : h.getPdfRecords()) {
    ZipEntry zipEntry = new ZipEntry(r.getPdfName());
    output.putNextEntry(zipEntry);

    FileInputStream pdfFile = new FileInputStream(new File(r.getPath()));
    IOUtils.copy(pdfFile, output);  // this method belongs to apache IO Commons lib!
    pdfFile.close();
    output.closeEntry();
}
output.finish();
output.close();
于 2016-05-24T05:01:05.337 に答える
1

このコードを確認してください。zip ファイル ディレクトリを簡単に作成できます。

public class CreateZipFileDirectory {

    public static void main(String args[])
    {                
            try
            {
                    String zipFile = "C:/FileIO/zipdemo.zip";
                    String sourceDirectory = "C:/examples";

                    //create byte buffer
                    byte[] buffer = new byte[1024];
                    FileOutputStream fout = new FileOutputStream(zipFile);
                    ZipOutputStream zout = new ZipOutputStream(fout);
                    File dir = new File(sourceDirectory);
                    if(!dir.isDirectory())
                     {
                            System.out.println(sourceDirectory + " is not a directory");
                     }
                     else
                     {
                            File[] files = dir.listFiles();

                            for(int i=0; i < files.length ; i++)
                            {
                                    System.out.println("Adding " + files[i].getName());
                                   FileInputStream fin = new FileInputStream(files[i]);
                                   zout.putNextEntry(new ZipEntry(files[i].getName()));
                                   int length;
                                   while((length = fin.read(buffer)) > 0)
                                    {
                                       zout.write(buffer, 0, length);
                                    }
                            zout.closeEntry();
                fin.close();
                            }
                     }
        zout.close();
                    System.out.println("Zip file has been created!");

            }
            catch(IOException ioe)
            {
                    System.out.println("IOException :" + ioe);
            }

    }
}
于 2016-05-24T05:56:31.783 に答える