Ⅰ 請大神幫忙解決一個用java解壓縮一個zip壓縮格式位元組流中文內容亂碼問題!
伺服器端一般不是採用的是gzip嗎。
Ⅱ 什麼是位元組流文件
位元組流(byte stream) 不包含邊界數據的連續流 位元組流是由位元組組成的,字元流是由字元組成的. Java里字元由兩個位元組組成.位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的但實際中很多的數據是文本,又提出了字元流的概念,它是按虛擬機的encode來處理,也就是要進行字元集的轉化。在從位元組流轉化為字元流時,實際上就是byte[]轉化為String時,public String(byte bytes[], String charsetName)有一個關鍵的參數字元集編碼,通常我們都省略了,那系統就用操作系統默認的lang 流式傳輸主要指將整個音頻和視頻及三維媒體等多媒體文件經過特定的壓縮方式解析成一個個壓縮包,由視頻伺服器向用戶計算機順序或實時傳送。在採用流式傳輸方式的系統中,用戶不必像採用下載方式那樣等到整個文件全部下載完畢,而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備對壓縮的A/V、3D等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的伺服器內繼續下載。
Ⅲ 文件傳輸的文件傳輸方式
根據移動和存儲文件、列印文件和程序輸入等目的不同,文件傳輸有三種工作方式,即信息流方式、壓縮方式和信息塊方式。
①信息流方式把文件作為位元組流傳輸。文件可分為若干由一系列位元組或機器字長為單位的邏輯單元所組成的邏輯記錄。在一個記錄或一個文件的結尾有「記錄結束」或「文件結束」等「結束」標志。「結束」標志由兩個位元組組成。第一位元組為「轉義」位元組,第二位元組為 相應的「結束」位元組。如果文件中的數據位元組恰與「轉義」位元組相同,即按字元填充辦法處理。也就是說發方在數據位元組前多發一「轉義」位元組,而收方遇到到連續兩個「轉義」位元組時去掉一個,以達到數據的透明傳輸。
②壓縮方式 也是把文件表示成位元組序列進行傳輸,但把其中重復出現的位元組(如空白字元)進行壓縮,以提高傳輸效率。為此,這種位元組流是由常規數據、壓縮數據和控制信息三種成分相互交錯組成。毎一成分之前均有一位元組指出相關信息。列印文件採用此方式。
③信息塊方式把文件表示為一系列信息塊進行傳輸。每塊前面有指出該信息塊長度的塊頭。
虛文件概念在計算機系統中,文件格式和數據表示不盡相同,如不同的字元集、編碼以及機器字長等。傳輸文件時為使數據的語義保持不變,需要作相應轉換。為了減少轉換軟體的數量,引入虛文件概念。在網路范圍內定義共同的虛文件結構和虛文件傳輸系統。制定一種標準的邏輯文件結構和數據表示。各個主機在傳輸文件時,要把自己的文件數據轉換成能在網路上傳輸的標准形式。而目的主機在接收時再把它轉換為自己的局部形式。由此解決了不同的文件管理系統之間的不相容問題。
Ⅳ C/C++ 如何把經哈夫曼壓縮演算法後的位元組流保存到文件中
用到了C語言的位運算。文件的保存是按照自己為單位的,1位元組8位,也就是說你的問題,需要2個位元組存儲。順便說一下,你還需要保存字典信息(編碼和字元的對應信息),這樣才能完成解壓。不然壓縮毫無意義。
將整數n的第i位置為1 的代碼 n |= 1 << i;
將整數n的第i為置為0的代碼 n &= ~(1 << i);
Ⅳ 計算機網路,請問位元組流和報文流的區別是什麼
位元組流是由位元組組成的,
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
字元流和位元組流都是什麼
流就是stream. 一個連續的位元組隊列。
流是程序輸入或輸出的一個連續的位元組序列,設備(例如滑鼠,鍵盤,磁碟,屏幕和列印機)的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現---不一定是物理磁碟文件,還可以是對應與某個輸入/輸出源的邏輯文件
流(streams)在I/O系統中是一種I/O機制和功能,或者稱為streams子系統。它本身並不是一個物理設備的概念。
引入流的目的:
傳統的字元設備驅動程序框架有許多缺點,這表現在:
。內核與字元設備驅動程序間介面的抽象層次太高
。內核沒有為字元設備提供可靠的緩沖區分配和管理功能
。許多系統對字元設備的界面是把數據看成是FIFO(先進先出)的位元組流,因此沒有識別消息邊界,區分普通設備和控制信息,以及判定不同消息優先順序的能力,也沒有位元組流流量控制
。在網路數據傳輸設備中這些問題更突出。網路中數據傳輸是基於消息或數據分組的。
流的概念:
用通訊中的術語來說,流是全雙工的處理過程,它是內核中驅動程序和用戶進程之間的數據傳輸通道。
從流的構造上來說,它由一個流頭,一個流驅動程序尾,以及其間的零個或若干個可選模塊構成 。流頭是一個用戶級介面,它允許用戶應用程序通過系統調用介面來訪問流。驅動程序尾與底層設備通信。在流的中間的模塊是處理數據的。
位元組流與字元流主要的區別是他們的的處理對象
位元組流是由位元組組成的,字元流是由字元組成的. Java里字元由兩個位元組組成.
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
但實際中很多的數據是文本,又提出了字元流的概念,它是按虛擬機的encode來處理,也就是要進行字元集的轉化。在從位元組流轉化為字元流時,實際上就是byte[]轉化為String時,
public String(byte bytes[], String charsetName)
有一個關鍵的參數字元集編碼,通常我們都省略了,那系統就用操作系統默認的lang
流式傳輸主要指將整個音頻和視頻及三維媒體等多媒體文件經過特定的壓縮方式解析成一個個壓縮包,由視頻伺服器向用戶計算機順序或實時傳送。在採用流式傳輸方式的系統中,用戶不必像採用下載方式那樣等到整個文件全部下載完畢,而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備對壓縮的A/V、3D等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的伺服器內繼續下載。
報文是網路中交換與傳輸的數據單元。報文包含了將要發送的完整的數據信息,其長短很不一致。(可分為自由報文和數字報文)
報文也是網路傳輸的單位,傳輸過程中會不斷的封裝成分組、包、幀來傳輸,封裝的方式就是添加一些信息段,那些就是報文頭
以一定格式組織起來的數據.
比如裡面有報文類型, 報文版本, 報文長度, 報文實體等等信息.
完全與系統定義, 或自定義的數據結構同義.
來幾個 TCP/IP 頭結構感受一下:
typedef struct _iphdr //定義IP首部
{
unsigned char h_lenver; //4位首部長度+4位IP版本號
unsigned char tos; //8位服務類型TOS
unsigned short total_len; //16位總長度(位元組)
unsigned short ident; //16位標識
unsigned short frag_and_flags; //3位標志位
unsigned char ttl; //8位生存時間 TTL
unsigned char proto; //8位協議 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校驗和
unsigned int sourceIP; //32位源IP地址
unsigned int destIP; //32位目的IP地址
}IP_HEADER;
typedef struct psd_hdr //定義TCP偽首部
{
unsigned long saddr; //源地址
unsigned long daddr; //目的地址
char mbz;
char ptcl; //協議類型
unsigned short tcpl; //TCP長度
}PSD_HEADER;
typedef struct _tcphdr //定義TCP首部
{
USHORT th_sport; //16位源埠
USHORT th_dport; //16位目的埠
unsigned int th_seq; //32位序列號
unsigned int th_ack; //32位確認號
unsigned char th_lenres; //4位首部長度/6位保留字
unsigned char th_flag; //6位標志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校驗和
USHORT th_urp; //16位緊急數據偏移量
}TCP_HEADER;
// 這里只是數據頭, 但頭最能讓你看清報文是啥東東
// IP_HEADER::total_len 指明了實體數據(也就是真正的消息內容)長度.
// 其他以此類推
Ⅵ 位元組流與字元流有什麼區別
位元組流與字元流有2點不同,相關介紹具體如下:
一、兩者的組成不同:
1、位元組流的組成:位元組流是由位元組組成的。
2、字元流的組成:字元流是由字元組成的。
二、兩者的處理不同:
1、位元組流的處理:主要用在處理二進制數據,它是按位元組來處理的但實際中很多的數據是文本。
2、字元流的處理:按虛擬機的encode來處理,也就是要進行字元集的轉化。
(6)位元組流壓縮擴展閱讀:
位元組流的其他介紹:
位元組流由視頻伺服器向用戶計算機順序或實時傳送。在採用流式傳輸方式的系統中,用戶不必像採用下載方式那樣等到整個文件全部下載完畢;
而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備對壓縮的3D等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的伺服器內繼續下載。
Ⅶ 位元組流和字元流區別
您好!關於位元組流,就是用來讀取位元組文件的文件流形式,一般用於讀取類似於圖片,音樂,壓縮文件等,並不是由一個一個得中文或英文之類的標准文字字元字元組成的文件,在讀取的時候,需要一個一個byte的去讀取。而字元流則可以讀取例如txt文檔這一類的,由標準的中英文字元或其他標准語言組成的文件,這一類文件可以直接按照char字元的大小為單位進行讀取。而且,字元流中還提供了一次讀一行的方法呦!祝閣下學習愉快!
Ⅷ 如何用zlib將很多文件或一個文件夾壓縮
問題的根源在於這些網友對於字元串和位元組流的概念非常的模糊,對文本文件和二進制文件的區別常常模稜兩可,其實位元組流可以表示所有的數據,二進制文件才是任何文件的本質。位元組流是一個位元組接一個位元組,並沒有結束符號
Ⅸ 位元組流解析是什麼
位元組流是由位元組組成的,
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
字元流和位元組流都是什麼
流就是stream. 一個連續的位元組隊列。
流是程序輸入或輸出的一個連續的位元組序列,設備(例如滑鼠,鍵盤,磁碟,屏幕和列印機)的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現---不一定是物理磁碟文件,還可以是對應與某個輸入/輸出源的邏輯文件
流(streams)在I/O系統中是一種I/O機制和功能,或者稱為streams子系統。它本身並不是一個物理設備的概念。
引入流的目的:
傳統的字元設備驅動程序框架有許多缺點,這表現在:
。內核與字元設備驅動程序間介面的抽象層次太高
。內核沒有為字元設備提供可靠的緩沖區分配和管理功能
。許多系統對字元設備的界面是把數據看成是FIFO(先進先出)的位元組流,因此沒有識別消息邊界,區分普通設備和控制信息,以及判定不同消息優先順序的能力,也沒有位元組流流量控制
。在網路數據傳輸設備中這些問題更突出。網路中數據傳輸是基於消息或數據分組的。
流的概念:
用通訊中的術語來說,流是全雙工的處理過程,它是內核中驅動程序和用戶進程之間的數據傳輸通道。
從流的構造上來說,它由一個流頭,一個流驅動程序尾,以及其間的零個或若干個可選模塊構成 。流頭是一個用戶級介面,它允許用戶應用程序通過系統調用介面來訪問流。驅動程序尾與底層設備通信。在流的中間的模塊是處理數據的。
位元組流與字元流主要的區別是他們的的處理對象
位元組流是由位元組組成的,字元流是由字元組成的. Java里字元由兩個位元組組成.
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
但實際中很多的數據是文本,又提出了字元流的概念,它是按虛擬機的encode來處理,也就是要進行字元集的轉化。在從位元組流轉化為字元流時,實際上就是byte[]轉化為String時,
public String(byte bytes[], String charsetName)
有一個關鍵的參數字元集編碼,通常我們都省略了,那系統就用操作系統默認的lang
流式傳輸主要指將整個音頻和視頻及三維媒體等多媒體文件經過特定的壓縮方式解析成一個個壓縮包,由視頻伺服器向用戶計算機順序或實時傳送。在採用流式傳輸方式的系統中,用戶不必像採用下載方式那樣等到整個文件全部下載完畢,而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備對壓縮的A/V、3D等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的伺服器內繼續下載。