質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

Q&A

解決済

1回答

5817閲覧

複数ファイルの圧縮について

kaori1994

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

0グッド

0クリップ

投稿2016/10/20 05:05

編集2016/10/20 09:46

お世話になっております。
javaでファイルの圧縮する方法をZipOutputStreamを使って実装しようと試みております。
昨日、単体ファイルのみファイルの圧縮を行うようにできました。
本日から複数ファイルを指定して一つのzipに圧縮しようと試みてります。

【メソッドを呼びだし、圧縮します。】
zipFile=圧縮先の指定
fileOrigin=圧縮元の指定
files[] = 圧縮元のしたいファイルの名前(formから1~3つのファイル名が取得される)
NewName = files[]の名前を変更したいときに使う

// 複数ファイルのzip化 public static boolean zipDownload(String zipFile, String fileOrigin, String[] files, String[] NewName) { byte[] buf = new byte[1024]; boolean PresenceFlag = false; try { // 圧縮先ファイルへのストリームを開く ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile)); for (int i = 0; i < files.length; i++) { String inArgs = fileOrigin + files[i]; // 圧縮元ファイルへのストリームを開く BufferedInputStream in = new BufferedInputStream(new FileInputStream(inArgs)); //ファイルの名前変更がない if(NewName[i] == ""){ // エントリを作成する ZipEntry entry = new ZipEntry(files[i]); out.putNextEntry(entry); PresenceFlag = true; //ファイルの名前変更がある }else{ // エントリを作成する ZipEntry entry = new ZipEntry(NewName[i]); out.putNextEntry(entry); PresenceFlag = true; } // データを圧縮して書き込む int size; while ((size = in.read(buf, 0, buf.length)) != -1) { out.write(buf, 0, size); } // エントリと入力ストリームを閉じる out.closeEntry(); in.close(); } // 出力ストリームを閉じる out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } return PresenceFlag; }

現在、これを動かすとfiles1~3のファイル指定をMAXの3つを送信するとちゃんと動くのですが
1~2つのファイル名指定だとエラーになってしまいます。
【サンプルフォーム】

<form method="POST" action="/updownload-2016/menu/download"> <p>ディレクトリ名</p> <input type="text" name="dName" /> <br></br> <br></br> ファイル名の入力 : <input type="text" name="dFile" /> ファイル名の変更⇒ <input type="text" name="dNameNew" /> <br></br> <br></br> ファイル名の入力 : <input type="text" name="dFile2" /> ファイル名の変更⇒ <input type="text" name="dNameNew2" /> <br></br> <br></br> ファイル名の入力 : <input type="text" name="dFile3" /> ファイル名の変更⇒ <input type="text" name="dNameNew3" /> <br></br> <br></br> <input type="submit" value="ダウンロード" /> </form>

ずいぶん長く悩みましたが、正解が見つからなかったので、質問させていただきました。
わかりにくかったら申し訳ありませんが、どなたかご教示いただけたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

お世話になっております。
色々検索して悩んでいたら、解凍ツールが合わない?
というのを見かけたので、解凍ツールを別のに変えたとろこ正常に動作していました。
今度はなぜ解凍ツールを変えるとちゃんと動作しないのかを検証しようと思います。
この投稿はクローズいたします。

投稿2016/10/20 07:11

kaori1994

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問