![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
javaでテキストを圧縮しているのですが、圧縮後のファイルを新たに別のファイルに保存させたい場合はどのような手順を踏めばいいのでしょうか?
public class zip{
public static void main(String[] args){
File file =new File("c:\\new\\files");
File files[] =file.listFiles();
for (int p = 0; p < files.length; p++) {
zip(files[p].getPath(),files[p].getPath() +".zip" );
}
}
private static void zip(String inFile,String outFile){
byte[] buf = new byte[1024];//*
int len;
try(
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(outFile)));
FileInputStream fi = new FileInputStream(inFile);
){
zos.putNextEntry(new ZipEntry(inFile));
len = fi.read(buf);
zos.write(buf, 0, len);
}catch(Exception e){
}
このままだと"c:\\new\\files"ここに保存されてしまうので
新たに”C:\new\新しいフォルダー”ここに保存するにはどうすればいいですか?
コードが置いてある場所、テキストが置いてある場所、zipを置く場所の3つがある感じです。
それと1024バイト以上のファイルを対象にする場合は*この部分を変えるのですか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?e8efa67)
No.1ベストアンサー
- 回答日時:
//各種インポート
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class zip{
public static void main(String[] args){
File file =new File("C:\\new\\files");
File files[] =file.listFiles();
for (int p = 0; p < files.length; p++) {
//変更部分
String str=files[p].getPath();
String regex = "C:\\\\new\\\\files";//このパス部分を
Pattern p1 = Pattern.compile(regex);
Matcher m = p1.matcher(str);
String result = m.replaceFirst("C:\\\\new\\\\新しいフォルダー");//このパス部分に変換している
zip(files[p].getPath(),result+".zip" );
//変更部分終了
}
}
private static void zip(String inFile,String outFile){
byte[] buf = new byte[1024];//*
int len;
try(
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(outFile)));
FileInputStream fi = new FileInputStream(inFile);
){
zos.putNextEntry(new ZipEntry(inFile));
len = fi.read(buf);
zos.write(buf, 0, len);
}catch(Exception e){
}
}
}
files[p]に入ったフォルダ内のファイルのパス内のC:\\new\\filesの文字列の部分を
C:\\new\\新しいフォルダー
に置き換えています これで圧縮ファイルはC:\\new\\新しいフォルダー のフォルダ内に作られます
//*部分の数値を上げるとサイズがさらに大きいファイルを圧縮できました
数値を上げすぎると動作が重くなりました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
生年月日と今日の日付から年齢...
-
setAttribute(String, int)は適...
-
importするには java.io.*; imp...
-
パソコンキーボードで時分秒を...
-
javaのプログラミングで作るRPG...
-
複数のテキストボックスに同じ...
-
C言語のポインターに関する警告
-
*で正三角形を出力
-
プログラミングの問題です。大...
-
JSPやサーブレットでSystem.out...
-
IF関数でEmpty値を設定する方法。
-
C言語の変数(LSB)の合わせ込...
-
論理演算子”||”またはの入力方法
-
行列の表示
-
1~100までの数字を表示し、か...
-
privateなフィールドは継承され...
-
戻り値を使用する呼出
-
n番目に大きな値を探索する
-
C#で実行時にメソッドの返り値...
-
VBAで配列の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
importするには java.io.*; imp...
-
Javaを使ってデジタル時計を作...
-
setAttribute(String, int)は適...
-
シャットダウンフックが呼ばれない
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
ColabでのPytorchのエラー
-
【JAVAエラー】互換性のない型...
-
文字列を数式に
-
importとextendsの用い方の違い...
-
Java3Dで横置き円筒体の円筒中...
-
HttpClientについて
-
ActionForm form にnullが入っ...
-
java初心者です。座標取得と図...
-
javaで画像を回転縮小
-
(急募)Javaじゃんけんゲームで
-
画面遷移時のデータ遷移について
おすすめ情報