
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バイト以上のファイルを対象にする場合は*この部分を変えるのですか?

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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「例外 *** は対応する try 文...
-
createImage()を使い コンパイル
-
ColabでのPytorchのエラー
-
eclipseに記述したjavaファイル...
-
干支の計算で。。。
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
Formの値が変更されたかどうか...
-
javaです
-
オブジェクトの中のプロパティ...
-
VBSエラー"オブジェクト型の変...
-
C# DataGridView列カスタマイズ
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
C#でのWNetAddConnection3の使...
-
変数を動的に作るには?
-
コマンドプロンプトに不正な文...
-
matchesを否定文として使う方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
Selenium IDEでexportしたコー...
-
javaでアプレットの描画が出来ない
-
データの外挿について
-
ActionForm form にnullが入っ...
-
(急募)一覧表画面でパスワード...
-
(急募)一覧画面表示がうまくい...
-
(急募)「.csv」ファイルをテー...
-
Java での グローバルIP取得
-
シャットダウンフックが呼ばれない
-
GridBagLayoutについての質問
-
文字列を数式に
-
生年月日と今日の日付から年齢...
-
JTableでスクロールバーが表示...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
JAVA 乱数で同じ数字を出さな...
おすすめ情報