導航:首頁 > 文件處理 > java字元串壓縮解壓

java字元串壓縮解壓

發布時間:2022-10-19 02:06:16

1. java中怎麼用cmd命令解壓zip文件

對於zip文件,java有自帶類庫java.util.zip;可是要想解壓rar文件只能靠第三方類庫,我試過兩個:com.github.junrar和de.innosystec.unrar,前者解壓時可能會出現crcError,後者pom配置時報錯;利用cmd命令調用winRAR進行解壓,無疑方便快捷很多。

調用cmd命令

public static boolean exe(String cmd) {
Runtime runtime = Runtime.getRuntime(); try {
Process p = runtime.exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"));

String line = reader.readLine(); while(line!=null) {
logger.info(line);
line = reader.readLine();
}
reader.close(); if(p.waitFor()!=0) { return false;
}
} catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) { // TODO Auto-generated catch block
e.printStackTrace();
} return true;
}

首先利用runtime.exec()執行指令,得到process,從process.getInputStream()中獲取回顯字元並列印,列印回顯時可能會出現中文亂碼,這個和操作系統編碼有關,我這里是GBK編碼,所以在new inputstreamReader時加入了編碼參數」GBK「

命令行字元串

如果需要調用cmd命令,如cd等,可寫」cmd c cd 目錄」。對於直接調用exe執行,則可以寫成」exe文件絕對路徑 參數」,在命令行字元串中,含有空格的路徑或者字元串應該再加上引號,即」」exe文件絕對路徑」 」參數」「

winRAR調用

我這里安裝目錄是C:/Program Files/WinRAR,將D:1.rar 解壓到D:,則寫成」」C:/Program Files/WinRAR/unRar.exe」 x -y D:/1.rar D:/」,x代表絕對路徑解壓,-y表示全部確定;壓縮的命令如下:「」C:/Program Files/WinRAR/rar.exe」 a -ep1 D:2.rar D:源目錄」,a表示添加文件到壓縮文件,-ep1表示排除基本目錄,如D:winrar ar這個目錄,如果沒有-ep1那麼壓縮包中會出現winrar目錄路徑,而加了之後就只將當前目錄打包,只有rar目錄

2. 如何解壓java 壓縮的 gzip字元串

一個zip可以內藏多個文件
狹義的gzip僅對單個文件壓縮,不能打包多個文件。
tar.gzip或tgz可以打包多個文件,屬於固實壓縮,壓縮比較高,但隨機存取單個文件的效率不如zip..

3. 請問您的那個java和c++之間關於zip數據壓縮和解壓的問題解決了嗎我也正遇到這個問題,想請教一下

java用
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
//壓縮數據並返回壓縮後的長度
int compressedDataLength =compresser.deflate(output);

//分離壓縮後的數據
byte[] encodestrig = new byte[compressedDataLength];
System.array(output, 0,
encodestrig, 0, compressedDataLe

伺服器c++:
Byte buf[1024];
memset(buf,0,1024);
memcpy(buf,strdata.c_str(),strdata.size());

Byteodata[1024];
memset(odata,0,1024);
uLongnodata=1024;
zdecompress(buf,strdata.size(),odata,&nodata);
這個完全能夠解決。

4. Java 字元串壓縮與解壓

給你提供個思想
首先你這不是物理上的壓縮,也就是說它是一個邏輯上的我們認同上的壓縮。
你需要寫一個演算法來對你所要處理的數據進行統計,然後按照演算法來改變結果。
最後達到一個後台的虛擬壓縮(實際上不是壓縮,只是演算法)。

5. java解壓zip文件

不好意思搞反了,這樣就更簡單了。
用這個構造方法ZipInputStream(InputStream in);接收傳過來的流,然後用這個類的getNextEntry()方法解壓縮文件,最後調用read(byte[] b, int off, int len)方法將數據寫入byte數組。
ZipInputStream zin = new ZipInputStream(in);
ZipEntry entry = null;
while((entry=zin.getNextEntry())!=null){
if(entry.isDirectory()||entry.getName().equals("..\\"))
continue;
BufferedInputStream bin = new BufferedInputStream(zin);
byte[] buf = new byte[];
bin.read(buf,0,1);
}

6. java如何將很長的字元串存儲為壓縮文件

String str = ""; int length = str.length(); List<Integer> index = new ArrayList<Integer>(); for (int i = 0; i < length - 1; i++) { if(str.charAt(i) != str.charAt(i + 1)){ index.add(i); } } if(str.charAt(length - 2) != str.charAt(length - 1)){ index.add(length - 1); } int start = 0; StringBuffer result = new StringBuffer(); for (int i = 0; i < index.size(); i++) { int end = index.get(i) + 1; if(i != 0){ start = index.get(i - 1) + 1; } String temp = str.substring(start, end); result.append(temp.charAt(0)).append(end - start); } System.out.println(result.toString());最終結果是:a6s4c5d7w1s1a3s1d1c1a1s1

7. 用java如何實現壓縮字元串

package javase1.day02;
/**
* 1)一種字元串壓縮演算法
* str ="aaaabbccccddeaaa"
* 壓縮為:"4a2b4c2d1e3a"
* 原理實現:
* str = "aaaabbccccddeaaa"
*
* c = str.charAt(i)//c是每個字元
* 1) 初始化
* StringBuilder buf = new StringBuilder();
* int count = 0;代表相同的字元個數
* char ch = str.charAt(0);代表正在統計的相同字元'a'
* 2) 從i=1開始迭代每個字元
* c = str.charAt(i);//c是每個當前字元
* 3) 檢查當前字元c與被統計ch是否一致
* 如果一致 count++
* 否則(不一致)
* 向緩沖區buf增加count+ch
* count=0,ch=c;
* 3)沒有下個字元就結束
* 4)還有字元串嗎?回到2)
*
* 2)實現還原演算法
* str = "4a2b4c2d1e3a";
* i
*/
public class Demo5 {
public static void main(String[] args) {
String s = comp("aaaawwwwe");
System.out.println(s);
// System.out.println(decomp(s));

}
public static String comp(String str){
int i = 1;
StringBuilder buf = new StringBuilder();
int count = 1;
char ch = str.charAt(0);
for(;;){
char c = i==str.length() ? '\10':str.charAt(i);
if(c==ch){
count++;
}else{
if(count == 1)
buf.append(ch);
else
buf.append(count).append(ch);
count=1;
ch = c;
}
i++;
if(i==str.length()+1){
break;
}
}
return buf.toString();

}
}

8. 用java實現,壓縮字元串,例如aaaawwwwe輸出4a5we

publicStringcountChar(Stringstr){
char[]aa=str.toCharArray();
int[]ch=newint[255];//以擴展ascII碼的長度定義整型數組,用於計數,比如a出現一次時,ch[97]就加1,附ascII碼表http://wenku..com/link?url=QtgixHAgMzyo_Ts_bLburo-qcOX7FAhR8vl96BrPbWA05FAbW-SCCARIZfjIBWxDzi-FmWonFjnoRBKMA8jQ1Wg3FDyG_6NZwbf4SZ4IH4C
for(inti=0;i<aa.length;i++){
chara=aa[i];
ch[a]++;//char型變數用於整型時,java取其ascII碼
}
Stringresult="";
//計數完成後遍歷ch取計數值
for(inti=0;i<ch.length;i++){
if(ch[i]>0){
result+=ch[i];//取計數值
charc=i;//取ascII碼對應的字元
result+=String.valueOf(c);
}
}
returnresult;
}

9. 用Java 編程 如何將 字元串原地壓縮。

對字元做累加,如果遇到相同字元則加1,否則輸出累加的數

10. java問題:一個字元串base64解碼後再zip解壓

importorg.apache.commons.codec.binary.Base64;

publicclassc{
publicstaticvoidmain(String[]args)throwsException{
//Stringbase64Str=
//"UEsDBC0AAAAIAAaPJkfS5clx//////////+/mU+//////////AAAABAAEASwAAANUAAAAAAA==";
//BASE64Decoderdecoder=newBASE64Decoder();
//byte[]b=decoder.decodeBuffer(base64Str);//解碼
//Stringresult=decompressByteArrayToString(b,"UTF-8");
//System.out.println(result);
StringbaseString=Base64.encodeBase64String("我愛中國".getBytes("UTF-8"));
System.out.println(""我愛中國"的Base64編碼為:"+baseString);
Stringbase64Str="5oiR54ix5Lit5Zu9";
byte[]bytes=Base64.decodeBase64(base64Str);
System.out.println("解碼後:"+newString(bytes,"UTF-8"));
}
}

閱讀全文

與java字元串壓縮解壓相關的資料

熱點內容
php源碼本地安裝 瀏覽:961
伺服器怎麼用不會斷電 瀏覽:301
主從伺服器有什麼用 瀏覽:213
jstlpdf 瀏覽:14
安卓原神在哪個app下載 瀏覽:808
單片機編程技術什麼意思 瀏覽:104
e點課堂源碼 瀏覽:45
免費打擊墊app哪個好 瀏覽:532
程序員必裝的6款軟體 瀏覽:750
基於單片機的遙控器設計 瀏覽:521
安卓如何取消圓圖標 瀏覽:11
收件伺服器怎麼樣 瀏覽:48
建築設計規范pdf 瀏覽:98
如何合並兩個pdf 瀏覽:174
刷機包必須要解壓的單詞 瀏覽:483
android課表實現 瀏覽:864
頭條app在哪裡能看見有什麼活動 瀏覽:511
冰櫃壓縮機電容80歐 瀏覽:609
安卓各個版本圖標什麼樣 瀏覽:152
無錫哪裡有製作手機app 瀏覽:538